Numpy读取大端数据:数据类型格式

3 投票
1 回答
12716 浏览
提问于 2025-04-18 13:51

我正在尝试使用NumPy的fromfile函数从一个使用大端编码的文件中读取数据。根据文档,我了解到:

  • ">u2" - 大端无符号字
  • "<u2" - 小端无符号字

我做了一个测试文件来检查这个:

$ 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

这表明我在一个小端系统上(输出的第一行)。然而,我尝试以大端方式读取数据。我难道不应该得到

0xdcfe
0x98ba

吗?

1 个回答

3

其实你不应该这样做:

我们来看看这个文件的十六进制转储

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

然后看看来自 维基百科 的图片,你会发现你的输出是正确的。

在这里输入图片描述

撰写回答