Java で C++ ソフトウェアを変換しようとしていますが、ビット操作では同じ結果が得られません。私がやっていることの概要: データ エントリを含む ASCII ファイルがあり、長さは 2 バイト、符号なし (0-65535) です。ここで、2 バイトの unsigned int を 2 つの 1 バイトの unsigned short int に変換したいと考えています。
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];
この 2 つのコードは、異なる結果を生成します。理由はありますか?