【问题标题】:Reading Packet Id from Byte从字节中读取数据包 ID
【发布时间】:2011-02-02 01:42:19
【问题描述】:

我有一个需要发送到 ID 为 255 的客户端的数据包。发送 ID 为 0、1 和 2 的数据包没有问题。ID 必须为 255。出于某种原因,翻译完成后,我的服务器和客户端都会为任何大于 127 的 ID 获取“63”。

这是我正在使用的代码:

Console.WriteLine(Asc(System.Text.ASCIIEncoding.ASCII.GetString(System.Text.ASCIIEncoding.ASCII.GetBytes(Chr("255")))))

现在,这是服务器所做工作的一个过于复杂的版本。您可能认为这有点不必要,但执行的反函数仅供您查看。

“255”是我需要以上述格式发送的数据包 ID。正如我所说,任何大于 127 的都返回“63”。很烦人。

感谢任何帮助。

【问题讨论】:

    标签: vb.net ascii byte character


    【解决方案1】:

    取自here

    ASCIIEncoding 对应 Windows 代码页 20127。由于 ASCII 是 7 位编码,ASCII 字符被限制为最低 128 个 Unicode 字符,从 U+0000 到 U+007F。

    所以你不能使用这种技术,因为 255 不是有效的 ASCII 字符。

    【讨论】:

    • 嗯,我正在使用的服务器协议需要这个。我正在创建自己的服务器供客户端连接。这是协议详细信息的链接。
    • 我非常怀疑它是否需要任何 ASCII 转换。该链接仅指十六进制值,其中一些大于 0x7F。 ASCII 仅针对 0x00 和 0x7F 之间的值定义。请参阅 ASCII 表:klcconsulting.net/ascii.htm
    • 根据我的判断,数据包由第一个字节标识,在转换为字符串后,它是一个具有所需数据包 ID 的确切 ASCII 值的字符。会不会和客户端是 Java 有关系?
    猜你喜欢
    • 2017-10-10
    • 1970-01-01
    • 1970-01-01
    • 2020-01-11
    • 1970-01-01
    • 1970-01-01
    • 2013-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多