2

私は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);

の出力値value82a163c2間違っています。必要42a082a12122です。6 Byte期待される出力を取得する方法と、コードの問題点を誰か教えてください。

前もって感謝します。

4

2 に答える 2