• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 4534
  • Last Modified:

How to printf("%02X",CBuf) to FF but not to FFFFFFFF

char CBuf;

CBuf=0xFE;
 printf("%02X",CBuf);

I wish the result is FE, but it is FFFFFFFE.
Who can help me this? thanks!
0
wpy
Asked:
wpy
1 Solution
 
ozoCommented:
unsigned char CBuf;
0
 
wpyAuthor Commented:
thanks !! it work well!
0
 
RONSLOWCommented:
the problem is that the %x format is expecting an int.  You have put in a (signed) character with a negative value so the sign bit gets extended (ie. you end up with a negative int).

Either change CBuf to and unsigned char (as suggested) OR
cast it to unsigned char in the printf
eg.

print ("%02x",unsigned char(CBuf));

The best solution depends on what you subsequently want to do with CBuf.  If you are going to put in into a string, then you probably want to keep it a plain char (not make it unsigned) and just cast when you want to see the HEX value.

0

Featured Post

Has Powershell sent you back into the Stone Age?

If managing Active Directory using Windows Powershell® is making you feel like you stepped back in time, you are not alone.  For nearly 20 years, AD admins around the world have used one tool for day-to-day AD management: Hyena. Discover why.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now