位移零字节

时间:2014-07-21 06:40:49

标签: processing bit

我在Processing中编写程序,但我认为这不仅仅是这种语言问题。代码:

long combine8(int array[]) {
 long result = 0;
 for (int i = 0; i<8; i++) {
   byte byteval = (byte)array[i];
   result |= (byteval<<(8*i));
 }
 return result;
}

此函数将8个字节组合为一个长值。正常工作,直到其中一个数组值为零。它只是忽略它。例如:

Array value: 1 binary 00000001  
Array value: 0 binary 00000000 
Array value: 0 binary 00000000 
Array value: 0 binary 00000000 
Array value: 0 binary 00000000
Array value: 160 binary 10100000 
Array value: 255 binary 11111111
Array value: 25 binary 00011001 
Result: 11111111111111111010000000000001

由于解析long为int以便以十进制显示,结果值被削减,但这无论如何,它足以看到前16位。它忽略零数组值并在1之后写入160。 有没有办法将这些零应用于结果?

1 个答案:

答案 0 :(得分:2)

狂野猜测:首先尝试将你的字节转换为long:

result |= (((long)byteval)<<(8*i));

或者只是避免在开始时将array[i]投射到byte