2016-05-19 4 views
0

Когда я пытаюсь преобразовать один байт шестнадцатеричной строки в строку char, я нахожу, что она занимает 3 байта. Я использую Visual Studio 2013.Поверните байт шестнадцатеричного кода в строку символов

Если у меня меньше 3 байт, я получаю сообщение об ошибке: «Стек вокруг переменной« str »был поврежден».

Что я делаю неправильно? Разумеется, значение шестнадцатеричного значения 0xF1 должно соответствовать char str[1]? Почему мне нужно объявить 3 байтовый массив для назначения 1 байтового значения?

char str[3]; 
sprintf(str, "%02X", 0xF1); 

Содержание str является 0x0026fd18 «F1»

+4

Существует «F», «1», и 'NUL'. Это 3 байта. –

ответ

1

Вопрос заключается в том, что пытается напечатать «F1» в строке с последующей нулевой терминатор - это было бы три байта. В этом весь смысл функции sprintf - она ​​форматирует ввод в читаемую строку. Если вы пытаетесь просто присвоить шестнадцатеричное значение 0xf1 к полукокса, вы могли бы сделать это следующим образом:

char str = (char)0xF1

+0

Спасибо, это имеет большой смысл сейчас! – Hefaestion

+0

Рад, что я мог бы помочь! Не забудьте принять мой ответ, если вы удовлетворены этим. –

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