【发布时间】:2016-04-15 17:10:42
【问题描述】:
我有相同的代码,我在 raspberry 和 win7 上运行它,但我不能得到相同的结果
代码:
with open('file','rb') as fd:
ttt = fd.read(4)
print (ttt)
seed = unpack('>I', fd.read(4))[0]
print str(seed)
在 linux 上我有很好的结果。
b')M7\xeb'
692926443
但在 windows 上,我有
>M7ù
1401564715
为什么会有这种差异?为什么在 linux 我有超过 4 个字符?
编辑: 我终于找到了获得相同结果的方法。
import codecs
with codecs.open("G:/InsideReCaptcha-master/enc", mode='rb') as fd:
ttt = fd.read(4)
seed = unpack('>I', ttt)[0]
不确定所有代码是否有用,但它可以工作。
【问题讨论】:
-
在 Linux 上,您使用的是 Python 3。整数 692926443 是
b')M7\xeb'的解压缩值,因此在 Linux 测试中,“文件”的字节 4-7 与字节 0-3 相同.在 Windows 上,您使用的是 Python 2(因为print(ttt)打印常规字符串而不是bytes文字)。此外,Windows 上的文件在字节 0-3 中有b'>M7ù'。我不能说'ù'的字节值是多少,因为它取决于控制台代码页。 Windows 上的文件在字节 4-7 中也有b'S\x8a.+',解压为 1401564715。 -
从问题中删除您的解决方案并将其作为答案发布。