16 進数をファイルから int に変換したい。
文字列は次のようになります:
\0\0\x05\xa0
これは 1440 のはず
int i = '\x05'
です5
。
しかし、同じことをすると、\xa0
が得られ-96
ます。
文字列を正しく変換する方法はありますか?
16 進数をファイルから int に変換したい。
文字列は次のようになります:
\0\0\x05\xa0
これは 1440 のはず
int i = '\x05'
です5
。
しかし、同じことをすると、\xa0
が得られ-96
ます。
文字列を正しく変換する方法はありますか?
ビッグエンディアンの数字のようです。
の配列に4バイト(表示されたバイトが文字列であるかのように12バイトではありません。バイナリバイトであると想定しています)バイトがあると仮定すると、次のunsigned char data[4]
ように変換できるはずです。
const unsigned int x = (data[0] << 24) | (data[1] << 16) |
(data[2] << 8) | data[3];
データをプラグインすると:
const unsigned char data[] = { 0, 0, 0x5, 0xa0 };
上記は次のようになります。
const unsigned int x = (0 << 24) | (0 << 16) | (5 << 8) | 160;
これはちょうど256 * 5 | 160
= 1280 | 160
=1440
で、予想どおりです。