сдвиг по битам — Как по битам сдвигается на E в C ++?

Здравствуйте, у меня есть проблемы с пониманием этого и как, например, взять акцент, как é и преобразует его 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

-1

Решение

Код не конвертируется é в E9 — он преобразует 8-битное число в его шестнадцатеричное представление в виде четырехбитных фрагментов («nybbles»).

digits[(ch >> 4) & 0x0F] это цифра, обозначающая верхнюю часть, и digits[ch & 0x0F] это цифра, обозначающая нижнюю часть.

Если ты видишь é становиться E9, это потому что é имеет значение 233 в кодировке вашего персонажа.

0

Другие решения

Других решений пока нет …