提问人:Headshot 提问时间:6/4/2023 更新时间:6/4/2023 访问量:53
如何准确地在 byte[] C# 中获取 ASCII 内容?[已结束]
How to get ASCII content exactly in byte[] C#? [closed]
问:
我发现了很多关于从 byte[] 数组读取内容问题的文章、参考链接,但大多数文章都没有正确解码内容。有没有办法正确解码它们的内容?例如,我有 byte[] 数组,当转换为 ASCII 时,它们看起来不像预期的结果。
byte[] raw_data = new byte[] { 0, 0, 0, 12, 0, 0, 129, 13, 0, 0, 0, 0, 5, 80, 1, 0 };
Console.WriteLine(BitConverter.ToString(raw_data));
Console.WriteLine(Encoding.UTF8.GetString(raw_data, 0, raw_data.Length));
Console.WriteLine(Encoding.ASCII.GetString(raw_data, 0, raw_data.Length));
结果看起来非常模棱两可。
此外,我已经使用在线转换器查看结果,但它也不好,看不到它的正确值。
同时,我拥有的 byte[] 数组,可能是像这样的值。
S1F13
<L
>.
答:
1赞
Florian Herzog
6/4/2023
#1
与许多评论一样,我怀疑编码出了问题。如果您查找 ASCII 表的十六进制列上的字符,您会看到(或十六进制)是唯一映射到字母数字字符(即 )。这是一个暗示,你正在解码它。80
50
P
既然你已经有一个工具来转换你的数据,也许将你的字节数组与该工具将产生的结果进行比较,以获得你的预期结果?
评论
_stream = "S" + (Convert.ToInt16(data[6]) - 128).ToString() + "F" + data[7].ToString();
_stream = "S" + (Convert.ToInt16(data[6]) - 128).ToString() + "F" + data[7].ToString();