我正在尝试创建一个 PDU 编码器,它需要我:
- 将字符串中的每个字符转换为 ASCII 值
- 将 ASCII 值转换为 7 位二进制
- 使用这种方法- 将 7 位转换为 8 位。我通过获取第一个 septet 并从下一个 septet 的末尾添加直到第一个 8 位(如 url 中所示)在一个函数中执行此操作。这基本上贯穿始终。
- 使用 8 位二进制我可以将我的 PDU 字符串转换为十六进制。
使用时所有这些都可以正常工作:
ASCII = Convert.ToInt32(char)
Convert.ToString(ASCII, 2)
= 7位SeptetToOctet(7bit)
= 8bit(我的功能)Convert.ToString(Convert.ToInt32(8bit, 2), 16).ToUpper()
(如果它仅转换为 1 个字符,我将添加 0)
现在我的问题来了,当尝试转换特殊字符时,比如丹麦语'ø',你会得到 248 的 ASCII 值,这Convert.ToString(248, 2)
给了我11111000
(8 位)。因此,要么我需要知道如何强制将“ø”转换为 7 位二进制,要么需要修改 SeptetToOctet 转换(提供的 URL 上的转换),但我现在确实有足够的关于二进制和二进制转换的知识来知道如何正确处理。