我有一个字节数组需要重新打包为一个long数组。输入字节数组的大小未知(大约从0到几百)。长阵列需要出来右对齐即最低索引long应该用零填充,所有其他应该填满输入字节: 。 (b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11)→(xxxxb0b1b2b3,b4b5b6b7b8b9b10b11)在java中将byte []转换为long []
其中b1,b2等是给定字节。 我有一个解决方案,但它不是很整齐或可读:
// outArr has length (inArr.length+7)/8
for (int i = 0; i < inArr.length ; i++) {
outArr[outArr.length - i/8 - 1] |= ((long)inArr[inArr.length - i - 1]) << (i % 8) * 8;
}
有没有这样做的不太丑陋的方式?
请看看http://stackoverflow.com/questions/4485128/how-doi-i-转换长字节返回in-java –