Я пытаюсь создать кодировщик PDU, который требует от меня:
- Преобразование каждого символа в строке в значение ASCII
- Преобразование значения ASCII в 7-битный двоичный код
- Использование этого метода — преобразование 7-битного в 8-битное. Я делаю это в функции, беря первый септет и добавляя с конца следующего септета, пока первый не будет иметь 8 бит (как показано в URL-адресе). Это продолжается повсюду в основном.
- Используя 8-битный двоичный файл, я могу преобразовать строку PDU в шестнадцатеричный формат.
Все это прекрасно работает при использовании:
ASCII = Convert.ToInt32(char)
Convert.ToString(ASCII, 2)
= 7 битSeptetToOctet(7bit)
= 8 бит (Моя функция)Convert.ToString(Convert.ToInt32(8bit, 2), 16).ToUpper()
(я добавляю 0, если он преобразуется только в 1 символ)
Теперь возникает моя проблема: при попытке преобразовать специальные символы, такие как датское «ø», вы получаете значение ASCII 248, которое с Convert.ToString(248, 2)
дает мне 11111000
(8 бит). Поэтому либо мне нужно знать, как принудительно преобразовать «ø» в 7-битный двоичный код, либо преобразование SeptetToOctet (это преобразование по предоставленному URL-адресу) требует пересмотра, но теперь у меня достаточно знаний о двоичном и двоичном преобразовании, чтобы знать как сделать это правильно.
char
по своей сути является кодовой единицей UTF-16. Вам вообще не нужно звонитьConvert.ToInt32
. Но в основном, если у вас есть символы, отличные от ASCII, вам нужно знать, как они должны быть представлены... - person Jon Skeet   schedule 12.09.2011