2017-01-11 5 views
0

ANSI符号化文字列をバイナリに変換するプログラムを記述する。私のANSI値はÈです。ここで符号なし整数のbitset相当値

は、私がこれをやっている方法です:

int ascii; //used to store ASCII number of a character 

int length = strlen(input); 
char letter = NULL; 
for(int x=0;x<length;x++) //repeat until the input is read 
{ 
    ascii = input[x]; 
    bitset<8> binary(ascii); 
} 

しかし、asciiがint型でように、私は-56として値を取得していますし、bitsetを使用して、そのバイナリを見つけたとき、私は00110011を(取得しています文字Èの間違ったバイナリ値です)。代わりに私は11001000(Èの正しいバイナリ)として値を取得する必要があります。タイプがunsigned intの場合は、正しいバイナリ出力が得られることを理解しています。ただし、bitsetunsigned intタイプを受け付けていません。したがって、unsighed intを受け入れるbitsetと同等のものがありますか?または、このバイナリ変換を行う他の方法はありますか?

+0

署名付きの「int」値と符号なし値を混在させることに問題があります。それは明らかだったはずですが、私はそうは思わないでしょう。 – PaulMcKenzie

+0

入力のタイプは何ですか?どのようにそれを埋めるのですか?私はそれがここで重要だと思う。 – Rama

+0

ASCIIまたはANSIを使用している文字セットは何ですか? ASCII文字セットにはÈが含まれていません。 –

答えて

0

X-Yに問題があります。

ワイドまたはユニコード可変タイプを使用する必要があります。

あなたが探しているstd::bitsetは、
std::bitset<sizeof(unsigned int) * CHAR_BIT>です。

sizeof(unsigned int)は、unsigned intのバイト数です。
CHAR_BITは、1バイトのビット数です。

+0

このように書くべきです:unsigned int ascii; bitset バイナリ(ascii);どうすればいいですか? – AskMe

+0

ASCIIは7ビットなので、 'char ascii;'を使うことができます。 ANSIとUnicodeはより多くのビットを必要としますので、 'wchar_t ANSI;または' unsigned int unicode; 'が必要です。あなたは' std :: bitset'について質問しました。 –

関連する問題