Python/C#,将文件读入字节数组 - 不完全相同的结果

Python/C#, Reading File into Byte Array - Not Quite the Same Result

我正在尝试读取文件并在 C# 和 Iron 中处理它Python,但我 运行 遇到了一个小问题。

当我用任何一种语言读取文件时,我得到一个 几乎 相同但不完全相同的字节数组。

例如数组有1552字节。除了一件事,它们都是一样的。只要值“10”出现在 Python 实现中,值“13”就会出现在 C# 实现中。除此之外,所有其他字节都是相同的。

以下是我获取字节的大致操作:

Python:

f = open('C:\myfile.blah')
contents = f.read()
bytes = bytearray(contents, 'cp1252')

C#:

var bytes = File.ReadAllBytes(@"C:\myfile.blah");

也许我选择了错误的编码?尽管我不这么认为,因为 Python 实现的行为符合我的预期并成功处理了文件。

知道这里发生了什么吗?

(我不知道python)但是看起来你需要传递'rb'标志:

open('C:\myfile.blah', 'rb')

Reference:

On Windows, 'b' appended to the mode opens the file in binary mode, so there are also modes like 'rb', 'wb', and 'r+b'. Python on Windows makes a distinction between text and binary files; the end-of-line characters in text files are automatically altered slightly when data is read or written.

  • 请注意,值 1013 给出了问题所在的线索: Line feed 是十进制的 10Carriage return 是十进制的 13