1
Cのcharはプラットフォームに依存するため、常に8ビット長であるとは限りません。ビットを使用するその長さは、CHAR_BITS値によって与えられます。イーサネットフレーム内のフィールドのプリミティブCタイプ
どのように標準ネットワークプロトコルヘッダーの定義は、バイトを使用して行われます(長さは8ビットです)。たとえば、802.3フレームヘッダーのethertypeフィールドは2バイトで、それぞれが8ビットです。かしら
、機械でchar型は16ビットであり、任意のタイプが、この炭化長を使用してアドレス指定可能でなければならない場合、それはマシンに到着したとき、どのようにメモリの内容は、フレームが充填されています?。 char型の長さの値が8ビットより大きいマシンで、フレーム内のethertypeを表すために使用するプリミティブCタイプはどれですか?
固定長の 'stdint.h '型を使用してください。 @EugeneSh。 –
char型が8ビットより大きい場合、は役に立ちません。 –
そこにはビットシフトとマスキングのばかげた量があります。あるいは、ビットフィールドがあなたを助けてくれることを願ってもいいかもしれません...しかし、再び彼らがどのようにメモリに置かれているかは、実装定義です。だから、 'CHAR_BIT!= 8'は汎用コンピュータでは一般的ではありません。 –