+ -
当前位置:首页 → 问答吧 → 一个python写二进制的问题

一个python写二进制的问题

时间:2011-07-01

来源:互联网

本帖最后由 lolizeppelin 于 2011-07-01 10:38 编辑

比如说

>>> i=651714516
>>> type(i)
<type 'int'>
>>> hex(i)
'0x26d85fd4'
>>> import struct
>>> p = struct.pack('i',i)

这时候我把p写进文件后
>>> f = open('./11.raw','wb')
>>> f.write(p)
>>> f.close()

# hexdump -C 11.raw
00000000  d4 5f d8 26

可以看到写进去的数据就错位了,我尝试过把打包的i换成L,I之类的都一样的结果,writelines也不行...这什么原因,难道只能一个字节一个字节的写?

作者: lolizeppelin   发布时间: 2011-07-01

回复 lolizeppelin
d4 5f d8 26 哪里错了?

作者: 106033177   发布时间: 2011-07-01

本帖最后由 lolizeppelin 于 2011-07-01 11:59 编辑

应该是26 d8 5f d4

而不是d4 5f d8 26

写入顺序反了

作者: lolizeppelin   发布时间: 2011-07-01



QUOTE:
应该是26 d8 5f d4

而不是d4 5f d8 26

写入顺序反了
lolizeppelin 发表于 2011-07-01 11:58


google一下字节顺序。

作者: 106033177   发布时间: 2011-07-01

本帖最后由 lolizeppelin 于 2011-07-01 13:35 编辑

OK 明白了 3q

p = struct.pack('i',i)改成
p = struct.pack('>i',i)用大端模式保存就对了

作者: lolizeppelin   发布时间: 2011-07-01