У меня есть следующий код для преобразования 2 шестнадцатеричных цифр в значение байта:
const char* data= "Some hex string";
unsigned char temp=' ';
sscanf(data, "%2hhx", &temp);
При запуске я получаю исключение времени выполнения, говоря
стек вокруг переменной temp поврежден
Что я делаю неправильно? насколько мне известно 2hhx
следует преобразовать два байта в один …
Вы уверены, что ваш компилятор и стандартная библиотека поддерживают этот конкретный спецификатор? Это новое в C99.
Microsoft, например, не поддерживает это, согласно этому:
http://msdn.microsoft.com/en-us/library/xdb9w69d.aspx
Это означает, что hh
вероятно, интерпретируется как единый h
и поэтому ожидает указатель на unsigned short
не unsigned char
,
Других решений пока нет …