我在 ASCII 中遇到元音变音问题,所以我现在将我的 Stream 编码为 UTF-8,这有效,但它带来了一个问题。我通常在 ARTIST 之前读取 4 个字节以确定 ARTIST=WHOEVER 使用的长度
UTF8Encoding enc = new UTF8Encoding();
string response = enc.GetString(message, 0, bytesRead);
int posArtist = response.IndexOf("ARTIST");
BitConverter.ToInt32(message, posArtist - 4);
这对 ASCII 非常有效。
十六进制编辑器示例只是为了说明读取长度不再像使用 ASCII 那样工作
这是来自十六进制编辑器的示例屏幕截图:
“ARTIST=M.A.N.D.Y. vs. Booka Shade”长度 = 21
然而,这不适用于 UTF8 编码的流。 这是一个截图:
"ARTIST=Paulseq"长度 = E 但在图片中是 2E。
我在这里做错了什么?
最佳答案
你的数据是错误的 - 你实际上在应该有二进制零的数据中有字符'\0'
问题在于你如何创建这些数据,而不在于读取它
关于c# - 将流编码为 UTF-8 而不是 ASCII 后无法读取流中的整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3894104/