[PYTHON] Über Endian

Was ist ein Endian?

Endian ist die Bytereihenfolge in einer Binärdatei.

Angenommen, einige Daten werden in 2 Bytes gespeichert. 00000001 00000000 Zu diesem Zeitpunkt gibt dieses Byte einen Wert von 0 bis 255 an (dh von der kleinsten Ziffer bis zur 1,2,4,8 ... Ziffer). Der andere Wert repräsentiert einen Wert zwischen 256 und 65535 (dh vom kleinsten bis zum 256.512.1024 ...).

Für Big Endians steht das erste Byte für eine größere Zahl. Im obigen Beispiel liegt das erste Byte in der Größenordnung von 256 bis 32768 und das zweite Byte in der Größenordnung von 1 bis 128. Dies ist die gleiche Zahl, die wir normalerweise sehen.

Im Gegenteil, im Fall von Little Dian ist der erste Biss kleiner.

Außerdem ist die letzte Zahl im Byte immer noch die kleinste (?) (← Ich bin mir nicht sicher, bitte kommentieren Sie, wenn Sie verstehen)

In der heutigen Zeit haben viele Systeme Intel-Chips verwendet, so dass sowohl Win als auch Mac wenig tondianisch geworden sind, aber große Endian-Daten auf den Straßen herumlaufen.

Wenn Sie die Daten von Big Endian mit der Absicht von Little Endian berühren, ist das Ergebnis seltsam und es wird weh tun. Seien Sie also vorsichtig. Diese Seite fasst zusammen, wie man zwischen Endern wechselt (in Bezug auf die Sprachen, die ich am häufigsten benutze).

Fortran In Fortran gibt es eine Methode zum ursprünglichen Bestimmen des Endians zur Kompilierungszeit und eine Methode zum Umschalten beim Lesen einer Datei im Programm.

Entscheiden Sie sich zur Kompilierungszeit

Das ist super einfach. Wenn Sie gfortran verwenden, kompilieren Sie es wie folgt. Beachten Sie jedoch, dass alles im Programm ein Big Endian sein wird.

gfortran -fconvert=big-endian -o test test.f90

Ändern Sie für jede Gerätenummer mit Umgebungsvariablen

export F_UFMTENDIAN="little;big 87"

Wenn Sie dies tun, ist das "Basic" Little Endian "und nur die" Gerätenummer 87 ist Big Endian ". Natürlich können Sie "groß" und "klein" umdrehen. Sie können den Rest von ; weglassen.

Python Einfach zu entscheiden beim Lesen einer Datei. Angenommen, Sie möchten Daten lesen, um ein Bild zu erstellen. Fügen Sie zunächst die Daten der geöffneten Datei in das Array ein.

imagearr=np.fromfile(rfile,'<h',NROWS*NCOLS*1)

Ein Array, das die Originaldaten enthält, mit denen "imagearr" das Bild erstellt. np ist numpy. rfile ist das Verzeichnis der Dateien. NROWS * NCOLS * 1 gibt die Anzahl der Zeilen x die Anzahl der Spalten an.

Hier gibt <h den Typ der Variablen an, die als Endian gelesen werden soll. Das erste < zeigt den kleinen Tondian an. h zeigt int16 an.

Andere Beispiele sind unten gezeigt.

Zeichen Bytereihenfolge Größe Ausrichtung
@ native native native
= native standard none
< Kleiner Inder standard none
> Big Endian standard none
! Netzwerk (= Big Endian) standard none
Format Geben Sie C ein Python-Typ Standardgröße Bemerkungen
x pad byte no value    
c char Zeichenkette der Länge 1 1  
b signed char Integer-Typ (Integer) 1 (3)
B unsigned char Integer-Typ 1 (3)
? _Bool Boolescher Typ (Bool) 1 (1)
h short Integer-Typ 2 (3)
H unsigned short Integer-Typ 2 (3)
i int Integer-Typ 4 (3)
I unsigned int Integer-Typ 4 (3)
l long Integer-Typ 4 (3)
L unsigned long Integer-Typ 4 (3)
q long long Integer-Typ 8 (2), (3)
Q unsigned long long Integer-Typ 8 (2), (3)
f float Gleitkommatyp 4 (4)
d double Gleitkommatyp 8 (4)
s char[] Zeichenfolge    
p char[] Zeichenfolge    
P void * Integer-Typ   (5), (3)

Quelle: http://docs.python.jp/2/library/struct.html

Recommended Posts

Über Endian
Über LangID
Über CAGR
Über Tugenden
Über Python-Apt
Über die Erlaubnis
Über sklearn.preprocessing.Imputer
Über Gunicorn
Informationen zu den Anforderungen.txt
Über das Gebietsschema
Über Achse = 0, Achse = 1
Über den Import
Über Numpy
Über pip
Über Linux
Über numpy.newaxis
Über Linux
Über den Import
Über Linux
Über Linux
Über cv2.imread
Über _ und __
Über wxPython
Notizblock über TecoGAN
Über Python-Slices
Kurz über __name__
Über die Einschlussnotation von Python
Informationen zum Docker-Volume
Über den Referenztyp
Über Twitter Scraping
Erfahren Sie mehr über das Programmieren
Informationen zur Anpassung von Flaschen
Über Python tqdm.
Über die Python-Ausbeute
Anmerkungen zu mit
Über Python, Klasse
Über lineare Modelle
Über Go-Funktionen
Über beschreiben Pandas
Über Kivy Wurzel
Informationen zum Firestore-Timeout
Informationen zur Python-Vererbung
Über Python, range ()
Über die Verwirrungsmatrix
[Linux] Über PATH
Über Python Decorator
Linux (über Gruppen)
Hinweis zu awk
Informationen zur Python-Referenz
Über Autostart von Bitnami
Über Python-Dekorateure
Über Milkcocoa SDK
Hinweise zu Pytorch
[Python] Über Multi-Prozess
Über Numpy Broadcast
Über symbolische Links