Numpy读取big-endian数据:数据类型格式

时间:2014-07-18 13:47:09

标签: python numpy

我正在尝试使用NumPy fromfile函数从具有大端编码的文件中读取数据。 根据{{​​3}}我认为

  • ">u2" - big-endian unsigned word
  • "<u2" - little-endian unsigned word

我制作了一个测试文件来检查:

$ echo -ne '\xfe\xdc\xba\x98\x76\x54\x32\x10' > file

然而,我现在得到的结果与我的预期相反。

例如:

from numpy import *
import sys

print sys.byteorder

with open('file', 'rb') as fh:
    a=fromfile(fh, dtype='>u2', count=2, sep='')

print a
for i in a:
    print hex(i)

给出输出:

little
[65244 47768]
0xfedc
0xba98

显示我在一个小端系统(第一行输出)。但是,我尝试将数据读作big-endian。我应该

0xdcfe
0x98ba

1 个答案:

答案 0 :(得分:2)

其实你不应该:

让我们看一下文件的hexdump

$ hexdump -C file
00000000  fe dc ba 98 76 54 32 10

然后查看wikipedia中的图片,您就会发现输出正确。

enter image description here