2017-01-11 7 views
0

Написание программы для преобразования закодированной ANSI строки в двоичную. И мое значение ANSI равно È.битовый эквивалент для unsigned int

Вот как я это делаю:

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 является целым типом, так что я получаю значение в -56 и при нахождении его двоичного с помощью bitset я получаю 00110011 (который является неправильным двоичным значением для символа È). Вместо этого я должен получить значение как 11001000 (правильный двоичный код для È). Я понимаю, что если тип ascii будет unsigned int, тогда я получу правильный двоичный вывод. Однако bitset не принимает unsigned int тип; следовательно, существует ли какой-либо эквивалент bitset, который принимал бы unsighed int? ИЛИ есть ли другой способ сделать это двоичное преобразование?

+0

У вас возникла проблема с смешиванием подписанных значений 'int' и значений без знака. Это должно было быть очевидно, но я думаю, нет. – PaulMcKenzie

+0

Каков тип ввода? и как вы его заполняете? Я думаю, это важно здесь. – Rama

+0

Какой набор символов вы используете, ASCII или ANSI? Набор символов ASCII не содержит È. –

ответ

0

У вас проблема с X-Y.

Вы должны использовать широкий или unicode переменные типы.

std::bitset что вы ищете:
std::bitset<sizeof(unsigned int) * CHAR_BIT>.

sizeof(unsigned int) - количество байтов в unsigned int.
CHAR_BIT - количество бит в байте.

+0

Должен ли я писать так: unsigned int ascii; bitset двоичный (ascii); Не могли бы вы рассказать мне, как мне писать? – AskMe

+0

ASCII - это 7-битный, поэтому вы можете иметь 'char ascii;'. ANSI и Unicode нуждаются в большем количестве бит, поэтому вам нужно будет иметь «wchar_t ANSI;» или 'unsigned int unicode;' Вы задавали вопрос о 'std :: bitset', поэтому я привел вам пример. –

 Смежные вопросы

  • Нет связанных вопросов^_^