This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Incorrect work of the sprintf function

char str [4];

sprintf (str, "%.2x", 0x01);//Conversion of byte to the 2nd bit hexadecimal value

I expect in str[0] 0 character, in str[1] 1 character, that is '0' and '1'.
As a result function returns '1' and 'C'.
Remaining numbers - it is normal...

Parents
  • The reason is, that you only give ONE byte as value (0x01) and %x expects a TWO byte value. Then two bytes are used with only one valid, the other just undefined.

    Therefore you may cast that value to 16bits like

    sprintf (str, "%.2x", (unsigned int)0x01);
    

Reply
  • The reason is, that you only give ONE byte as value (0x01) and %x expects a TWO byte value. Then two bytes are used with only one valid, the other just undefined.

    Therefore you may cast that value to 16bits like

    sprintf (str, "%.2x", (unsigned int)0x01);
    

Children