我正在閱讀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