我正在阅读source-code,它下载zip文件并将数据读取到numpy数组中。假设对MacOS和Linux的工作,这里的代码是我看到的片段:为什么我们在这里需要排序?
def _read32(bytestream):
dt = numpy.dtype(numpy.uint32).newbyteorder('>')
return numpy.frombuffer(bytestream.read(4), dtype=dt)
此功能在以下情况下使用:
with gzip.open(filename) as bytestream:
magic = _read32(bytestream)
并不难,看看这里发生,但我对newbyteorder('>')
的目的感到困惑。我读了documentation,并知道什么endianness的意思,但不明白为什么开发人员加入newbyteorder(在我看来它不是真的需要)。
如果你看看第45行的代码,你会看到'data = numpy.frombuffer(buf,dtype = numpy.uint8)'。这会让事情变得有点混乱。为什么在这行代码中没有指定字节序? – emanuele
因为数据类型'uint8'只有1个字节长。字节序仅对多字节数据类型有意义。 – HeyYO
thanx :)你说得对 – emanuele