Здравствуйте, у меня есть проблемы с пониманием этого и как, например, взять акцент, как é
и преобразует его E9
, Я мог упустить что-то, что я понял, что это сдвигает вправо 4. é = 11101000
а также E = 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
Код не конвертируется é
в E9
— он преобразует 8-битное число в его шестнадцатеричное представление в виде четырехбитных фрагментов («nybbles»).
digits[(ch >> 4) & 0x0F]
это цифра, обозначающая верхнюю часть, и digits[ch & 0x0F]
это цифра, обозначающая нижнюю часть.
Если ты видишь é
становиться E9
, это потому что é
имеет значение 233 в кодировке вашего персонажа.
Других решений пока нет …