为什么我们在这里需要字节序?

Sal*_*ali 10 python numpy endianness

我正在阅读一个源代码,它下载zip文件并将数据读入numpy数组.代码假设在macos和linux上工作,这里是我看到的片段:

def _read32(bytestream):
    dt = numpy.dtype(numpy.uint32).newbyteorder('>')
    return numpy.frombuffer(bytestream.read(4), dtype=dt)
Run Code Online (Sandbox Code Playgroud)

此功能用于以下上下文:

with gzip.open(filename) as bytestream:
    magic = _read32(bytestream)
Run Code Online (Sandbox Code Playgroud)

不难看出这里发生了什么,但我很困惑的目的newbyteorder('>').我阅读了文档,并知道端点是什么意思,但无法理解为什么开发人员添加了newbyteorder(在我看来并不是真的需要).

Hey*_*yYO 7

这是因为下载的数据采用大端格式,如源页面中所述:http://yann.lecun.com/exdb/mnist/

文件中的所有整数都以大多数非英特尔处理器使用的MSB优先(高端)格式存储.英特尔处理器和其他低端机器的用户必须翻转标头的字节.