2
以下では、符号なしのcharに数値15を2進数でエンコードし、intに変換します。しかし、intをint8_tに置き換えると、それ以上15は出力されません。私はなぜか分からない。 int8_tのサイズは8ビットではないので、charとよく一致するはずです(これは8ビットです)。あなたは(実際にあなたが表示されていないものを)を参照してください何バイナリで符号化された符号なしの文字を整数に変換する
#include <iostream>
#include <string.h>
int main()
{
unsigned char binValue = 0<<7 | 0<<6 | 0<<5 | 0<<4 | 1<<3 | 1<<2 | 1<<1 | 1<<0; // this is 15 in binary
int intValue = (int)binValue;
// memcpy(&intValue,&binValue,sizeof(int)); // Or this one
std::cout << intValue << std::endl;
return 0;
}
'int8_t'が署名されている: は、印刷の途中でINTに変換し、小数など文字の種類(又は
int8_t
)を印刷します。 'uint8_t'を試してください。 「仕事が止まる」とはどういう意味ですか? –これはC++によく似ています –
@ Jean-FrançoisFabre申し訳ありません。私は出力がもはや期待どおり15ではないことを意味しました。プログラムはまだコンパイルされて実行されます。 –