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')
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.
- 请注意,值
10
和 13
给出了问题所在的线索:
Line feed
是十进制的 10,Carriage return
是十进制的 13。
我正在尝试读取文件并在 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')
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.
- 请注意,值
10
和13
给出了问题所在的线索:Line feed
是十进制的 10,Carriage return
是十进制的 13。