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

时间:2015-04-26 00:36:42

标签: c# python encoding bytearray

我试图读取文件并在C#和IronPython中处理它,但我遇到了一个小问题。

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

例如,该数组有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实现的行为与我期望的一样,并成功处理文件。

知道这里发生了什么吗?

1 个答案:

答案 0 :(得分:1)

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

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

Reference

  

在Windows上,附加到模式的'b'以二进制模式打开文件,所以   还有'rb','wb'和'r + b'等模式。 Windows上的Python   区分文本和二进制文件;行尾   文本文件中的字符会在数据时自动更改   读或写。

  • 请注意,值1013提供了问题的线索: Line feed小数 10 ,小数点Carriage return 13