【问题标题】:BinaryWriter.Write(byte value) issue when value > 127 [closed]值 > 127 时的 BinaryWriter.Write(字节值)问题 [关闭]
【发布时间】:2016-02-28 07:44:33
【问题描述】:

我正在将原始字节值写入文件:

  • 当值
  • 但如果一个字节大于 127,它就会变得一团糟。

我已经尝试过更改编码格式等,但没有成功。

public static void Generate()
{
    var fileName = "Test.bin";

    if (File.Exists(fileName))
        File.Delete(fileName);

    using (var binaryWriter = new BinaryWriter(File.Open(fileName, FileMode.Create)))
    {
        var byteArray = new byte[] {0x01, 0x02, 0x7F, 0x80};

        foreach (var b in byteArray)
        {
            binaryWriter.Write(b);
        }
    }
}

在上面的代码中,生成的文件应该是:

01 02 7F 80

但我得到的是:

01 02 7F D0 90

有什么线索吗?

这是一个测试应用程序: http://pastebin.com/0Cfv3Snc

这是生成的文件: http://postimg.org/image/55un9lar1/

我不在我的两台电脑上工作。在 Windows 10 上运行 .NET 4.0。

【问题讨论】:

  • BinaryWriter 有一个重载将数组写入文件,您是否尝试过仅使用 binaryWriter.Write(byteArray) 并跳过循环?
  • 是的,我也试过了。
  • 我无法复制,复制/粘贴您的代码会在我的系统上生成您预期的文件。
  • 这很奇怪......我以前也遇到过这个问题,并且在我放弃后它显然已经解决了。现在我正在写一个新的.dll,问题又来了。你能把你用来测试它的完整代码发给我吗?我不知道我的 PC 或 .NET 是否存在问题。
  • 你追错了问题。这里的问题是 Notepad++,一个文本编辑器。像所有文本编辑器一样,它希望读取文本文件。并且必须猜测文件的编码可能是什么。它挣扎在它上面,这不是文本。改用一个像样的十六进制查看器,比如 HxD。

标签: c# .net file binary binarywriter


【解决方案1】:

解决了,从来没有任何问题。

Notepad++ Hex Editor 是问题所在,它显示了不正确的数据(不知道为什么,我希望它只是显示原始数据)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-27
    • 1970-01-01
    • 2014-08-28
    • 2016-08-03
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    相关资源
    最近更新 更多