Question

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...

Was it helpful?

Solution

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.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top