Sto leggendo un source-code che scarica il file zip e legge i dati in una matrice numpy. Il codice si supponga di lavorare su MacOS e Linux ed ecco il frammento di che vedo:Perché abbiamo bisogno di endianness qui?
def _read32(bytestream):
dt = numpy.dtype(numpy.uint32).newbyteorder('>')
return numpy.frombuffer(bytestream.read(4), dtype=dt)
Questa funzione viene utilizzata nel seguente contesto:
with gzip.open(filename) as bytestream:
magic = _read32(bytestream)
Non è difficile vedere cosa succede qui , ma sono perplesso dallo scopo di newbyteorder('>')
. Ho letto il documentation e so cosa significa endianness, ma non riesco a capire perché esattamente lo sviluppatore abbia aggiunto newbyteorder (a mio parere non è davvero necessario).
Se date un'occhiata al codice alla riga 45 vedete 'data = numpy.frombuffer (buf, dtype = numpy.uint8)'. Questo fa pasticciare un po 'le cose. Perché in questa riga di codice non viene specificata l'endianità? – emanuele
Poiché il tipo di dati 'uint8' è lungo solo 1 byte. Endianness è significativo solo per tipi di dati multi-byte. – HeyYO
grazie :) hai ragione – emanuele