2015-04-26 55 views
0

我试图读取一个文件并在C#和IronPython中处理它,但我遇到了一个小问题。Python/C#,读取文件到字节数组 - 不完全相同的结果

当我阅读两种语言的文件,我得到一个字节数组,这是几乎相同,但并不完全。

例如,该数组有1552个字节。除了一件事外,他们都是一样的。任何时候在Python实现中出现值“10”,值“13”出现在C#实现中。除此之外,所有其他字节都是相同的。

这里大概我在做什么,以获得字节:

的Python:

C#:

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

也许我选择了错误的编码?尽管我不这么认为,因为Python实现的行为与我所期望的相同,并且能够成功处理文件。

任何想法这里发生了什么?

回答

1

(我不知道蟒蛇),但它看起来像你需要通过'rb'标志:

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

Reference

在Windows中, 'B' 附加到模式打开该文件处于二进制模式,所以 也有像'rb','wb'和'r + b'这样的模式。 Windows上的Python 区分了文本和二进制文件;在读取或写入数据 时,文本文件末尾的 字符会稍微自动更改。

  • 注意,值1013给线索的问题是什么: Line feed是十进制和Carriage return是十进制。
+0

谢谢!这绝对是错误的。虽然,现在我遇到了一个类似但不一样的问题。 (http://stackoverflow.com/questions/29908450/c-sharp-file-readallbytes-gives-seemingly-incorrect-values) 任何机会,你也有那个魔术修复?我正在考虑python-read文件是字节的“正确”排列。 –

相关问题