2017-07-20 15 views
1

Cのcharはプラットフォームに依存するため、常に8ビット長であるとは限りません。ビットを使用するその長さは、CHAR_BITS値によって与えられます。イーサネットフレーム内のフィールドのプリミティブCタイプ

どのように標準ネットワークプロトコルヘッダーの定義は、バイトを使用して行われます(長さは8ビットです)。たとえば、802.3フレームヘッダーのethertypeフィールドは2バイトで、それぞれが8ビットです。かしら

、機械でchar型は16ビットであり、任意のタイプが、この炭化長を使用してアドレス指定可能でなければならない場合、それはマシンに到着したとき、どのようにメモリの内容は、フレームが充填されています?。 char型の長さの値が8ビットより大きいマシンで、フレーム内のethertypeを表すために使用するプリミティブCタイプはどれですか?

+1

固定長の 'stdint.h '型を使用してください。 @EugeneSh。 –

+0

char型が8ビットより大きい場合、は役に立ちません。 –

+0

そこにはビットシフトとマスキングのばかげた量があります。あるいは、ビットフィールドがあなたを助けてくれることを願ってもいいかもしれません...しかし、再び彼らがどのようにメモリに置かれているかは、実装定義です。だから、 'CHAR_BIT!= 8'は汎用コンピュータでは一般的ではありません。 –

答えて

0

PICがフラッシュ内に文字列を格納する方法(ワード指向であり、ワードサイズがPICに依存する(一部のPICでは8ビットまたは16ビットではない)を見れば、上位ビットは単純にゼロになった。

関連する問題