私は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を読んで、エンディアンが何を意味するのか知っていますが、なぜ開発者がnewbyteorderを追加したのか理解できません。ソースページに記載されたデータがダウンロードされているためだ
45行目のコードを見ると、 'data = numpy.frombuffer(buf、dtype = numpy.uint8)'と表示されます。これは物事を少し混乱させます。このコード行でエンディアンが指定されていないのはなぜですか? – emanuele
データ型 'uint8'はちょうど1バイト長です。エンディアンは、マルチバイトデータ型の場合にのみ意味があります。 – HeyYO
あなた:) – emanuele