【发布时间】: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