Hello I having trouble understanding this and how for example it take an accent char like é and converts it E9. I could be missing something i get that it bit-shifts right 4. é = 11101000 and E = 01000101 shifting 4 doesn't makeE right?
static const char *digits = "0123456789ABCDEF";
unsigned char ch;
*dest++ = digits[(ch >> 4) & 0x0F];//this returns E
*dest++ = digits[ch & 0x0F];//this returns 9
The code doesn't convert
étoE9- it converts an 8-bit number to its hexadecimal representation, in four-bit pieces ("nybbles").digits[(ch >> 4) & 0x0F]is the digit that represents the high nybble, anddigits[ch & 0x0F]is the digit that represents the low nybble.If you see
ébecomeE9, it's becauseéhas the value 233 in your character encoding.