-1

您好,我无法理解这一点,例如它如何采用重音字符é并将其转换E9。我可能会遗漏一些我得到的东西,它向右移位 4。é = 11101000E = 01000101移位 4 不E正确?

static const char *digits = "0123456789ABCDEF";
unsigned char ch;
*dest++ = digits[(ch >> 4) & 0x0F];//this returns E
*dest++ = digits[ch & 0x0F];//this returns 9
4

1 回答 1

0

该代码不会转换éE9- 它将 8 位数字转换为它的十六进制表示,以四位片段(“nybbles”)。

digits[(ch >> 4) & 0x0F]是代表高半字节digits[ch & 0x0F]的数字,是代表低半字节的数字。

如果您看到ébecome E9,那是因为é您的字符编码中有值 233。

于 2018-08-16T14:04:15.833 回答