ここでは 、bytes バッファから unsigned long int に変換する場合:
unsigned long int anotherLongInt;
anotherLongInt = ( (byteArray[0] << 24)
+ (byteArray[1] << 16)
+ (byteArray[2] << 8)
+ (byteArray[3] ) );
byteArray は次のように宣言されます。unsigned char byteArray[4];
質問:
byteArray[1]
符号なしの 1 文字 (8 ビット) だけだと思っていました。16 だけ左にシフトすると、意味のあるすべてのビットがシフトアウトされ、バイト全体が 0 で埋められませんか? どうやら8ビットではないようです。おそらく、連続した4バイトであるbyteArray全体をシフトしていますか?しかし、それがどのように機能するかわかりません。