-5

char 型のポインター配列bufがあり、その各要素を unsigned int にキャストし、unsigned int または int arrayに格納したいと考えています。

問題は、以下のキャスト用コードの 2 番目のコード コマンドが unsigned int でキャストした後に負の値を返すことですが、0 から 255 までの正の値しか期待していません。コードの 2 行目のキャストで 0 から 255 までの正の値のみが返されるようにするにはどうすればよいですか?

int array [100];
array[l]=((unsigned int(buf[0]))*5));

それを手伝ってください。

ありがとうございました。

4

3 に答える 3

2

2 番目の命令は複雑すぎます。

指示を別々の行に分割します。

  • 1行で、「char型ポインター配列」に実際に格納されている値にアクセスします。

  • 後続の行で、必要なものに変換します。

これは、問題を診断するのに役立ち、コードをより読みやすく保守しやすくします。

于 2012-06-27T14:51:56.187 に答える
0

arrayとして宣言する必要があると思いますunsigned int。また、unsigned char代わりにキャストして要素unsigned intに割り当てるために使用します。arrayこれは、負の値の符号なしターゲット型への変換が、C++ 標準セクション 4.7 パラグラフ 2 に従うためです。

unsigned int array [100];
array[l]=((unsigned char(buf[0]))*5));
于 2012-06-27T15:12:00.847 に答える
0

あなたはしたく*(reinterpret_cast<unsigned char *>(&buf[0])))ない(unsigned int(buf[0]))。5 を掛けるint に、それを an にキャストすることを忘れないでください。

于 2012-06-27T14:54:22.930 に答える