0

最初の 3 バイト データ (24 ビット) を読み取り、それを 10 進数値に変換する必要があります。例えば。私の最初の 3 バイトは 0x00 0x00 0x0A です。これを読んで、値として 10 を取得する必要があります。入力を文字列 (c++ 文字列クラス) として取得します。どうすればC ++でそれを行うことができますか?

注: 整数値のビッグ エンディアン表現に従う必要があります。入力も生成できません。

私のコードを編集して
生成するために:

  stringstream lss ;
   int lNo =32 ;     // I know its 32 bit integer value
   lss<<lNo ;   //string to int  
   // got output  in  lss.str()       as 32       . size of the string is 2 .
    // Expected out put is  0x00000020          size of the string should be 4 .. 

だから私は以下のコードも試しました

 stringstream lss ;
  char a[3] ={0x00,0x00,0x0A} ;
  lss<<a ;
 // this time output is empty string  ...
4

1 に答える 1

4

私はあなたが欲しいものはこれだと思います:

unsigned char a[3] = { 0x00, 0x00, 0x0A };
int x = ((int)(char)a[0] << 16) | ((int)a[1] << 8) | a[2];`.

配列を左にシフトする前にintに変換するときに符号拡張されないように、配列は符号なし文字であることが重要です。おそらく有効な符号ビットがあるため、これは最初のものには適用されません。幸運を。

于 2012-04-16T07:50:15.987 に答える