16 進値を含む char 配列があります。これには 6 バイトが含まれます。これらの 6 バイトの crc を計算すると、関数は int 値を返します。これがコードです。
char buffer[] = {0x01,0x05,0x00,0x06,0x00,0x00};
byte[] bufferbyte = new String(buffer).getBytes();
for (byte bb : bufferbyte){
System.out.format("0X%x ", bb);
}
int crcresult;
crcresult = CRC16(buffer,6); //crc calculation
byte[] crc_bytes = ByteBuffer.allocate(4).putInt(crcresult).array();
for (byte b : crc_bytes){
System.out.format("0X%x ", b);
}
私の質問は
intとして取得したcrcをバイトに変換するためにbytebufferを使用しました。ただし、計算された crc は 2 バイトではなく 4 バイトで格納されます。CRC 16 を計算しましたが、結果の crc は 32 ビットです。crcの計算で「int」を返してしまい、javaではintは32bitと書いてあるからだと思います。
では、バイト バッファ (crc_bytes) または計算された int crc (crcresult) から 2 バイトだけを抽出する方法を説明します。
「char buffer[]」のバイトと計算されたcrcの2バイトを1バイト配列に入れました。どうすれば追加できますか
char buffer[] and crcresult
1 バイト配列で。
上記のコードの出力は
0X1 0X5 0X0 0X6 0X0 0X0 0X0 0X0 0X2d 0Xcb
最初の 6 バイトは char 配列から変換されたバイトで、最後の 4 バイトは crc です。