protected byte[] pad(byte in[], int padLen)
{
if(padLen == 0)
return in;
int inlen = in.length;
int outlen = inlen;
int rem = inlen % padLen;
if(rem > 0)
outlen = inlen + (padLen - rem);
byte out[] = new byte[outlen];
for(int xx = 0; xx < inlen; xx++)
out[xx] = in[xx]; return out;
}
{
if(padLen == 0)
return in;
int inlen = in.length;
int outlen = inlen;
int rem = inlen % padLen;
if(rem > 0)
outlen = inlen + (padLen - rem);
byte out[] = new byte[outlen];
for(int xx = 0; xx < inlen; xx++)
out[xx] = in[xx]; return out;
}
解决方案 »
- java单继承的优点到底是什么?接口真的可以掩盖多继承的“缺点”吗?
- 上传时候,如何判断图片宽高
- 基于引用的队列与基于链表的队列的效率比较?
- 关于jasperreport的问题,谢谢高手解答
- JCP的具体作用是什么呢,审核流程是什么样的呢?
- 这道题怎么做(菜鸟提问)
- 编写一个类似联众的五子棋游戏,大家有何高见!
- 使用sybase出现SET CHAINED command not allowed within multi-statement transaction. 为什么会出现这种情况呢
- 怎样在小程序里做个表格?
- java 的编译问题
- 如何在程序中实现鼠标点击jtextfield这一效果?
- java程序的编译出错问题
接受一个byte数组和一个代表扩充长度的整数作为参数,返回一个包含原数组数据但长度可能会扩充的新数组。算法的核心是确定新数组的长度,具体算法是:如果扩充参数padLen为0,则不扩充,直接返回原数组;
否则,对原数组长度和扩充参数padLen求模,如果模大于0,则新数组的长度是原数组长度+扩充参数padLen-求得的模,否则和原数则相同。
最后将原数组的数据一次拷贝到新数组,并返回新数组。不过这个算法值得改进,1. 模为0的情况和padLen参数为0的情况时相同的,可以作相同处理;2. 拷贝数组宜用System.arrayCopy;3. 可读性需加强。我的改进版本是:protected byte[] pad(byte in[], int padLen) {
if (padLen == 0 || in.length % padLen == 0)
return in;
byte[] out = new byte[in.length + padLen - in.length % padLen];
System.arraycopy(in, 0, out, 0, in.length);
return out;
}