私はこのコードを使用しています:
int number; //=smth
unsigned char sendBuffer[255];
sendBuffer[0] = number & 0xFF;
sendBuffer[1] = (number >> 8) & 0xFF;
sendBuffer[2] = (number >> 16) & 0xFF;
sendBuffer[3] = (number >> 24) & 0xFF;
number
バイト配列に入れますsendBuffer
。
私の質問は:
バイト配列に 2 つの数値を埋め込みたいとします。このように進めますか?
sendBuffer[0] = number & 0xFF; sendBuffer[1] = (number >> 8) & 0xFF; sendBuffer[2] = (number >> 16) & 0xFF; sendBuffer[3] = (number >> 24) & 0xFF; sendBuffer[4] = number2 & 0xFF; sendBuffer[5] = (number2 >> 8) & 0xFF; sendBuffer[6] = (number2 >> 16) & 0xFF; sendBuffer[7] = (number2 >> 24) & 0xFF;
number
サイズが8または6バイトであっても、これは機能しますか? (これを言っているのは、一部のプラットフォームでは int が 4 バイトまたは 6 である可能性があるためです。したがって、number が 6 バイトの場合でも上記のコードが機能するかどうかを考えていました。さらに注意すべきことは、6 バイトであっても、その中に4バイトの整数を格納すると、上記のコードは機能しますか?)。通常、このバッファはカードの一部のメモリに保存され、読み取りに問題はありません(たとえば、エンディアンなどの問題、読み取り時のバイト配列は保存した順序で来るようです)。
最後に、バイト配列から整数を再構築する方法は
sendBuffer
?