VB.NET中如何提取Byte数组中的字符串信息,同时保留其原始二进制结构?
- 内容介绍
- 文章标签
- 相关推荐
本文共计420个文字,预计阅读时间需要2分钟。
我的语言通常包含人类可读的格式化序列化数据,但其中某些产品包包含逐字原始的二进制数据。我的解析器使用String作为缓冲区,因为这可能是最易用的选择。然而,数据来自网络。
我的语言通常包含人类可读格式的序列化数据消息,但该语言中的某些产品包含逐字原始的二进制数据.我的解析器使用String作为缓冲区,因为这似乎是最容易使用的东西.但是,数据从网络套接字读取到Byte数组中.
现在,我正在尝试连接Byte()和String之间的点:
' data as Byte() ' count as Integer ' buffer as String buffer += System.Text.Encoding.ASCII.GetString(data, 0, count)
但我最初的假设是,ASCII编码只会留下我的字节,结果证明是无效的;具有不适合7位模型的值的任何字节都被转换为’?’.
那么我想到使用单字节“Unicode”编码,它应该只留下我的字节,但也允许整个8位范围内的值:
' data as Byte() ' count as Integer ' buffer as String Dim enc = New System.Text.UTF8Encoding buffer += enc.GetString(data, 0, count)
但我的数据仍然受到损害.我实际上还没有能够精确地推断数据是如何被破坏的,但我确实知道数据的长度正在变化,这表明字节不是逐字逐句的.
那么如何获取一个String,其内容只是我的Bytes()输入中字节的逐字副本?
根据我们的评论讨论,您似乎希望在编码的绝对中看到Byte实例.如果是这种情况,您应该考虑使用List(Of Byte)而不是String本文共计420个文字,预计阅读时间需要2分钟。
我的语言通常包含人类可读的格式化序列化数据,但其中某些产品包包含逐字原始的二进制数据。我的解析器使用String作为缓冲区,因为这可能是最易用的选择。然而,数据来自网络。
我的语言通常包含人类可读格式的序列化数据消息,但该语言中的某些产品包含逐字原始的二进制数据.我的解析器使用String作为缓冲区,因为这似乎是最容易使用的东西.但是,数据从网络套接字读取到Byte数组中.
现在,我正在尝试连接Byte()和String之间的点:
' data as Byte() ' count as Integer ' buffer as String buffer += System.Text.Encoding.ASCII.GetString(data, 0, count)
但我最初的假设是,ASCII编码只会留下我的字节,结果证明是无效的;具有不适合7位模型的值的任何字节都被转换为’?’.
那么我想到使用单字节“Unicode”编码,它应该只留下我的字节,但也允许整个8位范围内的值:
' data as Byte() ' count as Integer ' buffer as String Dim enc = New System.Text.UTF8Encoding buffer += enc.GetString(data, 0, count)
但我的数据仍然受到损害.我实际上还没有能够精确地推断数据是如何被破坏的,但我确实知道数据的长度正在变化,这表明字节不是逐字逐句的.
那么如何获取一个String,其内容只是我的Bytes()输入中字节的逐字副本?
根据我们的评论讨论,您似乎希望在编码的绝对中看到Byte实例.如果是这种情况,您应该考虑使用List(Of Byte)而不是String
