我正在尝试在 Java 中翻转一些字节,而我拥有的函数对某些字节正常工作,而对其他字节则失败。
我正在使用的功能是这样的:
public static int foldInByte(int m, int pos, byte b) {
int tempInt = (b << (pos * 8));
tempInt = tempInt & (0x000000ff << (pos * 8));
m = m | tempInt;
return m;
}
实现这一点的代码是:
byte[] bitMaskArray = new byte[]{
byteBuffer.get(inputIndex),
byteBuffer.get(inputIndex + 1),
byteBuffer.get(inputIndex + 2),
byteBuffer.get(inputIndex + 3)};
int tempInt = 0;
tempInt = foldInByte(0, 3, bitMaskArray[3]);
tempInt = foldInByte(tempInt, 2, bitMaskArray[2]);
tempInt = foldInByte(tempInt, 1, bitMaskArray[1]);
tempInt = foldInByte(tempInt, 0, bitMaskArray[0]);
bitMask = tempInt;
字节从 ByteBuffer 中读取,byteOrder 为 Little Endian。
例如,字节 00 01 B6 02 将位掩码设置为:2B60100 - 这在我的程序中完美运行。
但是,如果字节为 A0 01 30 00,则 bitMask 设置为: 3001A0 - 已从位掩码中删除最后一个零。
有什么办法可以阻止 Java 删除尾随零?
我希望这是有道理的。
谢谢
托尼