Я потратил некоторое время, пытаясь заставить строку превратиться в массив неподписанных символов, но не повезло. Я выполняю реализацию AES, и у меня есть все, кроме входной части считывания. Это код, который у меня есть в банкомате.Преобразование строки в unsigned char
string text = "E3 FD 51 12" ;
int size = text.length();
unsigned char* charText = new unsigned char[size/2];
int i = 0;
std::istringstream text_2(text);
unsigned int c;
unsigned char ch;
while (text_2 >> hex >> c)
{
ch = c;
cout <<ch;
}
Я хочу, чтобы моя строка была в массиве charText. Строка отлично читается в unsigned int, но когда я пытаюсь поместить ее в массив или в unsigned char (ch), она дает мне gibbrish.
Любая помощь будет замечательной.
Первые два символа находятся за пределами диапазона ASCII, 51 дает «Q», а последний символ - это фид. Вы могли бы назвать эту тарабарщину, но что вы ожидали ...? –
Не так ли? Что мне нужно сделать, чтобы прочитать его правильно? – inzombiak
Ну, что такое _correct_, если вам не нравится преобразовывать эти значения в их значения символов? Если вы напечатаете значения 'char' как' int', используя 'std :: cout << std :: hex << int (ch);' вы вернете исходные значения (очевидно, если ваши значения меньше 16 вам нужно установить ширину и символ заполнения '0'. –