2 バイトを格納するバッファがあるとします。
char *buf=new char[4];
// 00000010 00000000 (.. other stuff ..)
私がやりたいことは、最小バイトを最上位バイトに切り替え、その値を変数に格納することです。次のようにしようとしています:
short len=buf[1];
len <<= 8;
len |= buf[0];
// Result, as expected: 00000000 00000010
最上位バイト (buf[0]) が >= 128 でない限り、問題なく動作します。これにより、or 演算子 (|) が short の半分を 1 で埋めます。例:
Original: 10000110 00000000
Should be: 00000000 10000110
But is: 11111111 10000110
ありがとう(ああ、file.read(...、4);でファイルからバイトを読んでいます-これが関連しているかどうかさえわかりません)