我的语言通常包含人类可读格式的序列化数据消息,但该语言中的某些产品包含逐字原始的二进制数据。
我的解析器使用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()
输入中字节的逐字副本?
答案 0 :(得分:2)
根据我们的评论讨论,您似乎希望在编码的绝对中看到Byte
个实例。如果是这种情况,您应该考虑使用List(Of Byte)
而不是String