1

私は、整数を 16 ビットの 2 の補数として 2 つの部分で送信する独自​​のプロトコルを使用しています。最初に LSB が送信され、次に MSB が送信されます。元の値を復元する次のコードは正しいですか?

unsigned char message[BLK_SIZE];
// read LSB to message[0] and MSB to message[1]
short my_int = (message[1] << 8) | message[0];
4

2 に答える 2

1

shortが 16 ビットでない場合、コードは失敗すると思います。そのため、一部のプラットフォームではコードが失敗する可能性があります。ただし、失敗するプラットフォームが見つからない場合があります。

ターゲット プラットフォームで使用可能な場合は、int16_t を選択することをお勧めします。

于 2010-07-05T16:01:35.863 に答える
0

コードは正しいように見えますが、組み込みの C 関数を使用して、プロトコルが完全にプラットフォームに依存しないようにすることができます。

short my_int = ntohs(*(short*)message)

于 2010-07-05T16:05:15.163 に答える