问题
I have the following code to convert 2 hex digits to a byte value:
const char* data= "Some hex string";
unsigned char temp=' ';
sscanf(data, "%2hhx", &temp);
When running it I get a run time exception, saying
stack around variable temp is corrupted
What am I doing wrong? AFAIK 2hhx
should convert two bytes to one...
回答1:
Are you sure your compiler and standard library support that particular specifier? It is new in C99.
Microsoft for example doesn't support it, according to this:
http://msdn.microsoft.com/en-us/library/xdb9w69d.aspx
This means that the hh
is probably interpreted as a single h
and it therefore expects a pointer to unsigned short
, not unsigned char
.
来源:https://stackoverflow.com/questions/21988901/stack-corruption-using-sscanf