我正在尝试在 java 中转换 c++ 软件,但是位操作不会产生相同的结果。我在做什么的概述:有一个带有数据条目的 ascii 文件,2 个字节长,无符号(0-65535)。现在我想将两字节无符号整数转换为两个单字节无符号短整数。
C++ 代码:
signed char * pINT8;
signed char ACCBuf[3];
UInt16 tempBuf[128];
tempBuf[0] = Convert::ToUInt16(line);
pINT8 = (signed char *)&tempBuf[0];
ACCBuf[0] = *pINT8;
pINT8++;
ACCBuf[1] = *pINT8;
Java代码:
int[] ACCBuf = new int[6];
int[] tempBuf = new int[128];
tempBuf[0] = Integer.parseInt(line);
ACCBuf[0] = tempBuf[0] >> 8;
ACCBuf[1] = 0x00FF & tempBuf[0];
这两个代码产生不同的结果。知道为什么吗?