私はC++
プログラミングが初めてです。6
以上から単一の整数値を作成できるコードを実装しようとしていますindividual bytes
。
私は同じものを実装しましたが4 bytes
、それは機能しています
4 バイトのマイ コード:
char *command = "\x42\xa0\x82\xa1\x21\x22";
__int64 value;
value = (__int64)(((unsigned char)command[2] << 24) + ((unsigned char)command[3] << 16) + ((unsigned char)command[4] << 8) + (unsigned char)command[5]);
printf("%x %x %x %x %x",command[2], command[3], command[4], command[5], value);
このコードを使用すると、の値はvalue
次の82a12122
ようになりますが、6 バイトで実行しようとすると、結果が間違っています。
6 バイトのコード:
char *command = "\x42\xa0\x82\xa1\x21\x22";
__int64 value;
value = (__int64)(((unsigned char)command[0] << 40) + ((unsigned char)command[1] << 32) + ((unsigned char)command[2] << 24) + ((unsigned char)command[3] << 16) + ((unsigned char)command[4] << 8) + (unsigned char)command[5]);
printf("%x %x %x %x %x %x %x", command[0], command[1], command[2], command[3], command[4], command[5], value);
の出力値value
は82a163c2
間違っています。必要42a082a12122
です。6 Byte
期待される出力を取得する方法と、コードの問題点を誰か教えてください。
前もって感謝します。