、130ABF(16進数)値を整数には、に等しい(10進数)、 は、だから私のバイト配列が変換char型のバイトがある。例えば
char buf[3] = {0x13 , 0x0A , 0xBF};
であると私は10進値を取得する必要がありますバイト配列以下は
は私のサンプルコードです:
#include<iostream>
using namespace std;
int main()
{
char buf[3] = {0x13 , 0x0A , 0xBF};
int number = buf[0]*0x10000 + buf[1]*0x100 + buf[2];
cout<<number<<endl;
return 0;
}
と結果は次のとおりです。(間違った)
1247679
私は
char buf[3] = {0x13 , 0x0A , 0xBF};
に変更しない限り
int buf[3] = {0x13 , 0x0A , 0xBF};
それから正しい結果が得られます。
残念ながら、私は配列の文字のタイプとして設定する必要があります、誰もこれを解決する方法を知っていますか?
エンディアンを認識していますか?あなたは実際にビッグエンディアンフォーマットを保証しています。 –
@πάνταῥεῖ良い点ですが、整数を計算する方法はエンディアン依存ではありません。私は彼が "手書きの16進表現"を意味すると仮定しています – Rerito