7.1. Struct 8212 Interpretieren von Bytes als gepackte Binärdaten Dieses Modul führt Konvertierungen zwischen Python-Werten und C-Strukturen durch, die als Python-Bytes-Objekte dargestellt werden. Dies kann bei der Bearbeitung von binären Daten, die in Dateien oder aus Netzwerkverbindungen gespeichert sind, unter anderem verwendet werden. Es verwendet Format-Strings als kompakte Beschreibungen des Layouts der C-Strukturen und die beabsichtigte Umwandlung von Python-Werten. Standardmäßig enthält das Ergebnis der Verpackung einer gegebenen C-Struktur Pad-Bytes, um eine korrekte Ausrichtung für die C-Typen zu bewältigen, die ähnlich sind, die Ausrichtung wird beim Auspacken berücksichtigt. Dieses Verhalten wird so gewählt, dass die Bytes eines gepackten struct exakt dem Layout im Speicher der entsprechenden C struct entsprechen. Um plattformunabhängige Datenformate zu bearbeiten oder implizite Pad-Bytes zu unterlassen, verwenden Sie Standardgröße und Ausrichtung statt nativer Größe und Ausrichtung: siehe Byte Order, Size und Alignment für Details. Mehrere Strukturfunktionen (und Methoden von Struct) nehmen ein Pufferargument ein. Dies bezieht sich auf Objekte, die das Pufferprotokoll implementieren und entweder einen lesbaren oder lesbaren Schreibpuffer bereitstellen. Die häufigsten Arten, die zu diesem Zweck verwendet werden, sind Bytes und Bytearray. Aber viele andere Typen, die als Array von Bytes betrachtet werden können, implementieren das Pufferprotokoll, so dass sie ohne zusätzliches Kopieren aus einem Bytes-Objekt gelesen werden können. 7.1.1. Funktionen und Ausnahmen Das Modul definiert die folgenden Ausnahmen und Funktionen: Ausnahmestruktur. Fehler Ausnahme bei verschiedenen Anlässen angehoben Argument ist eine Zeichenfolge, die beschreibt, was falsch ist Geben Sie ein Bytes-Objekt mit den Werten v1 zurück. V2 Verpackt nach dem Format String fmt. Die Argumente müssen mit den vom Format benötigten Werten übereinstimmen. Packen Sie die Werte v1. V2 Entsprechend dem Formatstring fmt und schreibe die gepackten Bytes in den beschreibbaren Pufferpuffer, beginnend bei Positionsoffset. Beachten Sie, dass Offset ein erforderliches Argument ist. Auspacken aus dem Pufferpuffer (vermutlich verpackt nach Packung (fmt.)) Nach dem Formatstring fmt. Das Ergebnis ist ein Tupel, auch wenn es genau ein Element enthält. Die Größe der buffer8217s in Bytes muss mit der Größe übereinstimmen, die vom Format benötigt wird, wie durch calcsize () reflektiert wird. Aus dem Puffer ausgehen, beginnend bei Positionsoffset. Nach dem Formatstring fmt. Das Ergebnis ist ein Tupel, auch wenn es genau ein Element enthält. Die Puffer8217s Größe in Bytes, minus Offset. Muss mindestens die Größe sein, die vom Format benötigt wird, wie von calcsize () reflektiert wird. Iterativ aus dem Pufferpuffer nach dem Formatstring fmt entpacken. Diese Funktion gibt einen Iterator zurück, der gleichgroße Chunks aus dem Puffer liest, bis alle Inhalte verbraucht sind. Die Größe von buffer8217s in Bytes muss ein Vielfaches der Größe sein, die vom Format benötigt wird, wie von calcsize () reflektiert wird. Jede Iteration ergibt ein Tupel, wie es der Formatstring spezifiziert hat. Neu in Version 3.4. Geben Sie die Größe des struct (und damit des Bytes-Objekts, das von pack (fmt.) Erzeugt wird, entsprechend dem Formatstring fmt. 7.1.2. Format Strings Format Strings sind der Mechanismus, der verwendet wird, um das erwartete Layout beim Packen und Auspacken von Daten anzugeben. Sie sind aus Formatzeichen aufgebaut. Die die Art der verpackten Daten angeben. Darüber hinaus gibt es Sonderzeichen für die Steuerung der Byte Order, Size und Alignment. 7.1.2.1. Byte-Reihenfolge, Größe und Ausrichtung Standardmäßig werden C-Typen in der netzartigen Format - und Byte-Reihenfolge von machine8217s dargestellt und ordnungsgemäß durch Überspringen von Pad-Bytes (je nach den vom C-Compiler verwendeten Regeln) ausgerichtet. Alternativ kann das erste Zeichen des Formatstrings verwendet werden, um die Bytereihenfolge, die Größe und die Ausrichtung der gepackten Daten gemäß der folgenden Tabelle anzugeben: Wenn das erste Zeichen keines davon ist, wird 64 angenommen. Native Byte Order ist Big-Endian oder Little-Endian, abhängig von der Host-System. Zum Beispiel sind Intel x86 und AMD64 (x86-64) Little-Endian Motorola 68000 und PowerPC G5 sind Big-Endian ARM und Intel Itanium Feature umschaltbare Endianness (Bi-Endian). Verwenden Sie sys. byteorder, um die Endlosigkeit Ihres Systems zu überprüfen. Native Größe und Ausrichtung werden mit dem C compiler8217s Größe des Ausdrucks bestimmt. Dies ist immer mit der nativen Byte-Reihenfolge kombiniert. Die Standardgröße hängt nur vom Formatzeichen ab, siehe die Tabelle im Abschnitt "Formatzeichen". Beachten Sie den Unterschied zwischen 64 und. Beide verwenden native Byte-Reihenfolge, aber die Größe und Ausrichtung der letzteren ist standardisiert. Das Formular steht für jene armen Seelen zur Verfügung, die behaupten, sie können sich daran erinnern, ob die Netzwerk-Byte-Ordnung groß-endian oder little-endian ist. Es gibt keine Möglichkeit, nicht-native Byte-Reihenfolge anzugeben (Kraft-Byte-Swapping) verwenden Sie die entsprechende Wahl von lt oder gt. Padding wird nur automatisch zwischen aufeinanderfolgenden Strukturelementen hinzugefügt. Keine Polsterung wird am Anfang oder am Ende der codierten Struktur hinzugefügt. Es wird keine Polsterung hinzugefügt, wenn nicht-native Größe und Ausrichtung verwendet wird, z. B. Mit 8216lt8217, 8216gt8217, 82168217 und 82168217. Um das Ende einer Struktur an die Ausrichtungsanforderung eines bestimmten Typs auszurichten, beenden Sie das Format mit dem Code für diesen Typ mit einer Wiederholungszählung von Null. Siehe Beispiele. 7.1.2.2. Format Zeichen Format Zeichen haben die folgende Bedeutung der Umwandlung zwischen C und Python Werte sollten offensichtlich sein, da ihre Arten. Die Spalte 8216Standard size8217 bezieht sich auf die Größe des gepackten Wertes in Bytes bei Verwendung von Standardgröße, dh wenn der Formatstring mit einem von lt beginnt. Gt oder . Bei Verwendung der nativen Größe ist die Größe des gepackten Wertes plattformabhängig. Geändert in Version 3.6: Unterstützung für das e-Format hinzugefügt. Der Umrechnungscode entspricht dem von C99 definierten Bool-Typ. Wenn dieser Typ nicht verfügbar ist, wird er mit einem char simuliert. Im Standardmodus wird es immer durch ein Byte dargestellt. Die Q - und Q-Konvertierungscodes sind nur im nativen Modus verfügbar, wenn der Plattform-C-Compiler C lange lang unterstützt. Oder unter Windows int64. Sie sind immer in Standard-Modi verfügbar. Wenn Sie versuchen, eine Nicht-Ganzzahl mit einem der Integer-Konvertierungscodes zu packen, wenn die Nicht-Ganzzahl eine index () - Methode hat, dann wird diese Methode aufgerufen, um das Argument in eine Ganzzahl vor dem Packen zu konvertieren. Geändert in Version 3.2: Die Verwendung der index () - Methode für Nicht-Integer ist in 3.2 neu. Die n - und N-Konvertierungscodes stehen nur für die native Größe zur Verfügung (als Standard oder mit dem 64-Byte-Auftragszeichen ausgewählt). Für die Standardgröße können Sie verwenden, welche der anderen Integer-Formate für Ihre Anwendung passt. Für die f. D und e Umwandlungscodes verwendet die gepackte Darstellung das IEEE 754 binary32, binary64 oder binary16 Format (für f. D oder e), unabhängig vom Gleitkommaformat, das von der Plattform verwendet wird. Das P-Format-Zeichen steht nur für die native Byte-Bestellung zur Verfügung (als Standard oder mit dem 64-Byte-Auftragszeichen ausgewählt). Das Byte-Order-Zeichen wählt die Verwendung von Little - oder Big-Endian-Ordnungen auf der Basis des Host-Systems. Das Strukturmodul interpretiert das nicht als native Ordnung, so dass das P-Format nicht verfügbar ist. Der IEEE 754 binary16 8220half precision8221 Typ wurde in der 2008 Revision der IEEE 754 Standard eingeführt. Es hat ein Vorzeichenbit, einen 5-Bit-Exponenten und eine 11-Bit-Präzision (mit 10 Bits explizit gespeichert) und kann Zahlen zwischen ca. 6.1e-05 und 6.5e04 mit voller Genauigkeit darstellen. Dieser Typ wird von C-Compilern nicht weitgehend unterstützt: Auf einer typischen Maschine kann ein unsignierter Kurzschluss für die Lagerung verwendet werden, aber nicht für mathematische Operationen. Weitere Informationen finden Sie auf der Wikipedia-Seite zum Halb-Präzisions-Gleitkomma-Format. Ein Formatzeichen kann durch eine ganzzahlige Wiederholungszählung vorangestellt werden. Zum Beispiel bedeutet der Formatstring 4h genau dasselbe wie hhhh. Whitespace Zeichen zwischen den Formaten werden ignoriert eine Zählung und sein Format darf nicht Whitespace aber enthalten. Für das s-Format-Zeichen wird die Zählung als die Länge der Bytes interpretiert, nicht eine Wiederholungszählung wie für die anderen Formatzeichen zum Beispiel, 10s bedeutet eine einzelne 10-Byte-Zeichenfolge, während 10c 10 Zeichen bedeutet. Wenn eine Zählung nicht gegeben ist, wird sie standardmäßig auf 1. Für die Verpackung wird die Zeichenfolge abgeschnitten oder mit Null-Bytes gefüllt, um sie fit zu machen. Zum Auspacken hat das resultierende Bytesobjekt immer genau die angegebene Anzahl von Bytes. Als Sonderfall bedeutet 0s eine einzelne, leere Zeichenfolge (während 0c 0 Zeichen bedeutet). Beim Packen eines Wertes x mit einem der ganzzahligen Formate (b. B. h. H. i. I. l. L. q. Q), wenn x außerhalb des gültigen Bereichs für dieses Format ist, dann wird struct. error angehoben. Geändert in Version 3.1: In 3.0 verpackten einige der Integer-Formate Out-of-Range-Werte und erhöhten DeprecationWarning statt struct. error. Das p-Formatzeichen codiert einen 8220Pascal string8221, was bedeutet, dass eine kurze String mit variabler Länge in einer festen Anzahl von Bytes gespeichert ist. Gegeben durch die Zählung. Das erste Byte ist die Länge des Strings oder 255, je nachdem, welcher Wert kleiner ist. Die Bytes der Zeichenfolge folgen. Wenn der zu packende String () zu lang ist (länger als der Zählwert minus 1), werden nur die führenden Zähl-1-Bytes des Strings gespeichert. Wenn der String kürzer ist als count-1. Es ist mit Null-Bytes gefüllt, so dass genau Zähler-Bytes in allen verwendet werden. Beachten Sie, dass zum Auspacken (). Das p-Format-Zeichen verbraucht Zähler-Bytes, aber dass die zurückgegebene Zeichenfolge darf nie mehr als 255 Bytes enthalten. Für das Formatzeichen ist der Rückgabewert entweder True oder False. Beim Packen wird der Wahrheitswert des Argumentobjekts verwendet. Entweder 0 oder 1 in der nativen oder Standard-bool-Darstellung wird gepackt, und jeder Wert ungleich Null wird beim Auspacken wahr sein. 7.1.2.3. Beispiele Alle Beispiele nehmen eine native Byte-Reihenfolge, Größe und Ausrichtung mit einer Big-Endian-Maschine an.7.3. Struct 8212 Strings als gepackte Binärdaten interpretieren Dieses Modul führt Konvertierungen zwischen Python-Werten und C-Strukturen durch, die als Python-Strings dargestellt werden. Dies kann bei der Bearbeitung von binären Daten, die in Dateien oder aus Netzwerkverbindungen gespeichert sind, unter anderem verwendet werden. Es verwendet Format-Strings als kompakte Beschreibungen des Layouts der C-Strukturen und die beabsichtigte Umwandlung von Python-Werten. Standardmäßig enthält das Ergebnis der Verpackung einer gegebenen C-Struktur Pad-Bytes, um eine korrekte Ausrichtung für die C-Typen zu bewältigen, die ähnlich sind, die Ausrichtung wird beim Auspacken berücksichtigt. Dieses Verhalten wird so gewählt, dass die Bytes eines gepackten struct exakt dem Layout im Speicher der entsprechenden C struct entsprechen. Um plattformunabhängige Datenformate zu bearbeiten oder implizite Pad-Bytes zu unterlassen, verwenden Sie Standardgröße und Ausrichtung statt nativer Größe und Ausrichtung: siehe Byte Order, Size und Alignment für Details. 7.3.1. Funktionen und Ausnahmen Das Modul definiert die folgenden Ausnahmen und Funktionen: Ausnahmestruktur. Fehler Ausnahme bei verschiedenen Anlässen angehoben Argument ist eine Zeichenfolge, die beschreibt, was falsch ist Geben Sie einen String mit den Werten v1, v2 zurück. Verpackt nach dem angegebenen Format. Die Argumente müssen mit den vom Format benötigten Werten übereinstimmen. Packen Sie die Werte v1, v2. Nach dem gegebenen Format die gepackten Bytes in den beschreibbaren Puffer schreiben, beginnend bei Offset. Beachten Sie, dass der Versatz ein erforderliches Argument ist. Neu in Version 2.5. Packen Sie den String (vermutlich verpackt per Pack (fmt.)) Nach dem angegebenen Format aus. Das Ergebnis ist ein Tupel, auch wenn es genau ein Element enthält. Der String muss genau die Datenmenge enthalten, die vom Format benötigt wird (len (string) muss gleich kalkulieren (fmt)). Packen Sie den Puffer entsprechend dem angegebenen Format aus. Das Ergebnis ist ein Tupel, auch wenn es genau ein Element enthält. Der Puffer muss mindestens die vom Format benötigte Datenmenge enthalten (len (Pufferoffset :) muss mindestens berechnen (fmt)). Neu in Version 2.5. Geben Sie die Größe der Struktur (und damit der Zeichenfolge) entsprechend dem angegebenen Format zurück. 7.3.2. Format Strings Format Strings sind der Mechanismus, der verwendet wird, um das erwartete Layout beim Packen und Auspacken von Daten anzugeben. Sie sind aus Formatzeichen aufgebaut. Die die Art der verpackten Daten angeben. Darüber hinaus gibt es Sonderzeichen für die Steuerung der Byte Order, Size und Alignment. 7.3.2.1. Byte-Reihenfolge, Größe und Ausrichtung Standardmäßig werden C-Typen in der netzartigen Format - und Byte-Reihenfolge von machine8217s dargestellt und ordnungsgemäß durch Überspringen von Pad-Bytes (je nach den vom C-Compiler verwendeten Regeln) ausgerichtet. Alternativ kann das erste Zeichen des Formatstrings verwendet werden, um die Bytereihenfolge, die Größe und die Ausrichtung der gepackten Daten gemäß der folgenden Tabelle anzugeben: Wenn das erste Zeichen keines davon ist, wird 64 angenommen. Native Byte Order ist Big-Endian oder Little-Endian, abhängig von der Host-System. Zum Beispiel sind Intel x86 und AMD64 (x86-64) Little-Endian Motorola 68000 und PowerPC G5 sind Big-Endian ARM und Intel Itanium Feature umschaltbare Endianness (Bi-Endian). Verwenden Sie sys. byteorder, um die Endlosigkeit Ihres Systems zu überprüfen. Native Größe und Ausrichtung werden mit dem C compiler8217s Größe des Ausdrucks bestimmt. Dies ist immer mit der nativen Byte-Reihenfolge kombiniert. Die Standardgröße hängt nur vom Formatzeichen ab, siehe die Tabelle im Abschnitt "Formatzeichen". Beachten Sie den Unterschied zwischen 64 und. Beide verwenden native Byte-Reihenfolge, aber die Größe und Ausrichtung der letzteren ist standardisiert. Das Formular steht für jene armen Seelen zur Verfügung, die behaupten, sie können sich daran erinnern, ob die Netzwerk-Byte-Ordnung groß-endian oder little-endian ist. Es gibt keine Möglichkeit, nicht-native Byte-Reihenfolge anzugeben (Kraft-Byte-Swapping) verwenden Sie die entsprechende Wahl von lt oder gt. Padding wird nur automatisch zwischen aufeinanderfolgenden Strukturelementen hinzugefügt. Keine Polsterung wird am Anfang oder am Ende der codierten Struktur hinzugefügt. Es wird keine Polsterung hinzugefügt, wenn nicht-native Größe und Ausrichtung verwendet wird, z. B. Mit 8216lt8217, 8216gt8217, 82168217 und 82168217. Um das Ende einer Struktur an die Ausrichtungsanforderung eines bestimmten Typs auszurichten, beenden Sie das Format mit dem Code für diesen Typ mit einer Wiederholungszählung von Null. Siehe Beispiele. 7.3.2.2. Format Zeichen Format Zeichen haben die folgende Bedeutung der Umwandlung zwischen C und Python Werte sollten offensichtlich sein, da ihre Arten. Die Spalte 8216Standard size8217 bezieht sich auf die Größe des gepackten Wertes in Bytes bei Verwendung von Standardgröße, dh wenn der Formatstring mit einem von lt beginnt. Gt oder . Bei Verwendung der nativen Größe ist die Größe des gepackten Wertes plattformabhängig. Der Umrechnungscode entspricht dem von C99 definierten Bool-Typ. Wenn dieser Typ nicht verfügbar ist, wird er mit einem char simuliert. Im Standardmodus wird es immer durch ein Byte dargestellt. Neu in Version 2.6. Die Q - und Q-Konvertierungscodes sind nur im nativen Modus verfügbar, wenn der Plattform-C-Compiler C lange lang unterstützt. Oder unter Windows int64. Sie sind immer in Standard-Modi verfügbar. Neu in Version 2.2. Wenn Sie versuchen, eine Nicht-Ganzzahl mit einem der Integer-Konvertierungscodes zu packen, wenn die Nicht-Ganzzahl eine index () - Methode hat, dann wird diese Methode aufgerufen, um das Argument in eine Ganzzahl vor dem Packen zu konvertieren. Wenn keine index () - Methode existiert oder der Aufruf von index () den TypError auslöst. Dann wird die int () - Methode versucht. Allerdings ist die Verwendung von int () abgelehnt und wird die Abschreibung erhöhen. Geändert in Version 2.7: Die Verwendung der Methode index () für Nicht-Integer ist in 2.7 neu. Geändert in Version 2.7: Vor der Version 2.7 würden nicht alle Integer-Conversion-Codes die int () - Methode verwenden, um zu konvertieren und DeprecationWarning wurde nur für float-Argumente angehoben. Für die f - und d-Konvertierungscodes verwendet die gepackte Darstellung das IEEE 754 binary32 (für f) oder das binary64 (für d) Format, unabhängig vom Gleitkommaformat, das von der Plattform verwendet wird. Das P-Format-Zeichen steht nur für die native Byte-Bestellung zur Verfügung (als Standard oder mit dem 64-Byte-Auftragszeichen ausgewählt). Das Byte-Order-Zeichen wählt die Verwendung von Little - oder Big-Endian-Ordnungen auf der Basis des Host-Systems. Das Strukturmodul interpretiert das nicht als native Ordnung, so dass das P-Format nicht verfügbar ist. Ein Formatzeichen kann durch eine ganzzahlige Wiederholungszählung vorangestellt werden. Zum Beispiel bedeutet der Formatstring 4h genau dasselbe wie hhhh. Whitespace Zeichen zwischen den Formaten werden ignoriert eine Zählung und sein Format darf nicht Whitespace aber enthalten. Für das s-Format-Zeichen wird die Zählung als die Größe des Strings interpretiert, nicht eine Wiederholungszählung wie für die anderen Formatzeichen zum Beispiel, 10s bedeutet eine einzelne 10-Byte-Zeichenfolge, während 10c 10 Zeichen bedeutet. Wenn eine Zählung nicht gegeben ist, wird sie standardmäßig auf 1. Für die Verpackung wird die Zeichenfolge abgeschnitten oder mit Null-Bytes gefüllt, um sie fit zu machen. Zum Auspacken hat der resultierende String immer genau die angegebene Anzahl von Bytes. Als Sonderfall bedeutet 0s eine einzelne, leere Zeichenfolge (während 0c 0 Zeichen bedeutet). Das p-Formatzeichen codiert einen 8220Pascal string8221, was bedeutet, dass eine kurze String mit variabler Länge in einer festen Anzahl von Bytes gespeichert ist. Gegeben durch die Zählung. Das erste Byte ist die Länge des Strings oder 255, je nachdem, welcher Wert kleiner ist. Die Bytes der Zeichenfolge folgen. Wenn der zu packende String () zu lang ist (länger als der Zählwert minus 1), werden nur die führenden Zähl-1-Bytes des Strings gespeichert. Wenn der String kürzer ist als count-1. Es ist mit Null-Bytes gefüllt, so dass genau Zähler-Bytes in allen verwendet werden. Beachten Sie, dass zum Auspacken (). Das p-Format-Zeichen verbraucht Zähl-Bytes, aber die zurückgegebene Zeichenfolge darf niemals mehr als 255 Zeichen enthalten. Für das P-Format-Zeichen ist der Rückgabewert ein Python-Integer oder eine lange Ganzzahl, abhängig von der Größe, die benötigt wird, um einen Zeiger zu halten, wenn er in einen Integer-Typ gegossen wurde. Ein NULL-Zeiger wird immer als Python-Integer 0 zurückgegeben. Beim Packen von Pointer-Größen können Python-Integer - oder Long-Integer-Objekte verwendet werden. Zum Beispiel verwenden die Alpha - und Merced-Prozessoren 64-Bit-Zeigerwerte, dh ein Python-Lang-Integer wird verwendet, um den Zeiger zu halten. Andere Plattformen verwenden 32-Bit-Zeiger und verwenden eine Python-Ganzzahl. Für das Formatzeichen ist der Rückgabewert entweder True oder False. Beim Packen wird der Wahrheitswert des Argumentobjekts verwendet. Entweder 0 oder 1 in der nativen oder Standard-bool-Darstellung wird gepackt, und jeder Wert ungleich Null wird beim Auspacken wahr sein. 7.3.2.3. Beispiele Alle Beispiele nehmen eine native Byte Reihenfolge, Größe und Ausrichtung mit einem Big-Endian Maschine. Mailing List Archiv 15. Juni 2011, 05:29 Post 1 von 11 (5478 Aufrufe) Hallo, ich habe für 2 Tage gesucht Ein Weg, um Integer in Binärzahl umzuwandeln 0-gepolstert, nichts. Ich muss Zahlen mit einer definierten Anzahl von Bits umwandeln. Zum Beispiel auf 8 Bits 2 00000010 schrieb ich folgendes: ltcodegt usrbinenv python def int2binPadded (Anzahl, Größe): Der Zweck dieser Funktion ist es, ganzzahlige Zahl in Binärzahl umzuwandeln 0-gepolstert. Wenn type (number) int oder number lt 0: valueError erhöhen, sollte eine positive ganze Zahl sein, wenn type (size) int: raise ValueError, sollte eine Ganzzahl sein, wenn number gt (2size) -1: valueError erhöhen, number is too large convert Int to bin b str (Bin (Zahl)) 2: wenn len (b) Größe: b (size-len (b)) 0b if name main: import sys print int2binPadded (int (sys. argv1), int (sys. Argv2)) ltcodegt Das erfüllt meine Bedürfnisse. Obwohl, was denkst du darüber nach. Vielen Dank für Sie Bemerkungen, Re: Integer to binary 0-padded In Antwort auf 15.06.2011, 05:33 Post 2 von 11 (5399 Aufrufe) Am 15.06.2011 14:29, schrieb Olivier LEMAIRE: gt Hallo, Ive suchte nach 2 Tagen für einen Weg, um Integer gt in Binärzahl umzuwandeln 0-gepolstert, nichts. Ich muss Zahlen mit einer definierten Anzahl von Bits umwandeln. Zum Beispiel auf 8 Bits 2 00000010 Re: Integer auf binäre 0-padded In Antwort auf 15. Juni 2011, 05:48 Post 3 von 11 (5404 Aufrufe) Am Mi, 15. Juni 2011 um 10:29 Uhr, Olivier LEMAIRE Ltm. olivier. lemairegmailgt schrieb: gt b str (bin (nummer)) 2: gt wenn len (b) Größe: gt b (size-len (b)) 0b Du brauchst nicht die Str () dort als bin () schon Gibt eine Zahl zurück. Heres eine relativ triviale Vereinfachung - obwohl es den Code mehr kryptisch macht: Nachdem ich das geschrieben habe, sah ich Daniels Post, was besser ist. Gehen Sie mit diesem für null-füllende Minen allgemeiner, aber Sie können mit anderen Token auflegen. Re: Integer to binary 0-padded In Antwort auf 15. Juni 2011, 05:54 Post 4 von 11 (5397 Aufrufe) Olivier LEMAIRE schrieb: gt Ive war für 2 Tage nach einem Weg, um Integer in binäre Zahl gt 0 zu konvertieren - gekleidet, nichts. Ich muss Zahlen mit einer definierten Anzahl von Bits umwandeln. Zum Beispiel auf 8 Bits 2 00000010 schrieb ich folgendes: gt b str (bin (Zahl)) 2: Das Ergebnis von bin () ist bereits ein String, keine Notwendigkeit, str () anzuwenden. Gt wenn len (b) Größe: gt b (size-len (b)) 0b b. zfill (Größe) kann das machen. Gt Obwohl, was denkst du darüber nach. Heres eine andere Art und Weise (benötigt Python 2.7): gtgtgt b. format (42, 10) 0000101010 Re: Integer to binary 0-padded In Antwort auf 15.06.2011, 06:07 Post 5 von 11 (5400 Aufrufe) Vielen Dank an alles von Dir. So endlich kann ich einfach schreiben Ltcodegt usrbinenv python def int2binPadded (Anzahl, Größe): Der Zweck dieser Funktion ist es, ganzzahlige Zahl in die Binärzahl 0-gepolstert umzuwandeln. Wenn type (number) int oder number lt 0: valueError erhöhen, sollte eine positive ganze Zahl sein, wenn type (size) int: raise ValueError, sollte eine Ganzzahl sein, wenn number gt (2size) -1: valueError erhöhen, number is too large convert Int to bin Re: Integer to binary 0-padded In Antwort auf 15.06.2011, 06:13 Beitrag 6 von 11 (5409 Aufrufe) Am 06152011 07:33 AM, schrieb Daniel Rentz: gt Am 15.06.2011 14:29 , Schrieb Olivier LEMAIRE: gtgt Hallo, ich habe nach 2 Tagen nach einem Weg gesucht, um Integer gtgt in Binärzahl umzuwandeln 0-gepolstert, nichts. Ich muss Zahlen mit einer definierten Anzahl von Bits umwandeln. Zum Beispiel auf 8 Bits 2 00000010 gt gt bin (2) 2:.zfill (8) Nur um in den Thread zu haben (obwohl das OP mit 2.6 oder höher zu verwenden scheint) scheint die bin () - Funktion hinzugefügt zu haben 2.6 Das ist etwas, was ich wünschte, war zurück-portiert auf 2.4 und 2.5 als Ive genug geklemmt Kodierung gegen ältere Versionen von Python zu haben (re) geschrieben eine bin () Funktion mehrmals. Ah gut. integer zu binärer 0-gepolstert Hallo, ich habe nach 2 Tagen nach einem Weg gesucht, um Integer in Binärzahl umzuwandeln 0-gepolstert, nichts. Ich muss Zahlen mit einer definierten Anzahl von Bits umwandeln. Zum Beispiel auf 8 Bits 2 00000010 schrieb ich folgendes: ltcodegt usrbinenv python def int2binPadded (number, size): quotquotquotDer Zweck dieser Funktion besteht darin, ganzzahlige Zahl in Binärzahl umzuwandeln 0-padded. quotquotquot if type (number) int oder number lt 0: Erhöhe ValueError, sollte ein positives Integerquot sein, wenn type (size) int: raise ValueError, quotshould ein integerquot sein, wenn number gt (2size) -1: raise ValueError, quotnumber is too largequot konvertieren int in bin b str (bin )) 2: wenn len (b) Größe: b (size-len (b)) quotqquotb if name quotmainquot: import sys drucken int2binPadded (int (sys. argv1), int (sys. argv2)) ltcodegt Dies erfüllt meine Bedürfnisse. Obwohl, was denkst du darüber nach. Vielen Dank für Sie Bemerkungen, Öffnen Sie diesen Beitrag in der Threadansicht Bericht Inhalt als unangemessen Re: Integer zu binary 0-padded Am 15.06.2011 14:29, schrieb Olivier LEMAIRE: gt Hallo, ich habe nach 2 Tagen nach einem Weg gesucht Umwandlung von Integer gt in Binärzahl 0-gepolstert, nichts. Ich muss Zahlen mit einer definierten Anzahl von Bits umwandeln. Zum Beispiel auf 8 Bits 2 00000010 Öffnen Sie diesen Beitrag in der Thread-Ansicht Bericht Inhalt als unangemessen Re: Integer zu binary 0-padded In Antwort auf diesen Beitrag von Olivier LEMAIRE Am Mi, 15. Juni 2011 um 10:29 Uhr, Olivier LEMAIRE lthidden E-Mail Gt b str (bin (nummer)) 2: gt wenn len (b) Größe: gt b (size-len (b)) quotqquotb Du brauchst nicht die Str () dort als bin () gibt bereits eine Zahl zurück. Heres eine relativ triviale Vereinfachung - obwohl es den Code mehr kryptisch macht: Nachdem ich das geschrieben habe, sah ich Daniels Post, was besser ist. Gehen Sie mit diesem für null-füllende Minen allgemeiner, aber Sie können mit anderen Token auflegen. Dieses Thema bei Mister Wong speichern Dieses Thema bei YiGG. de speichern Dieses Thema bei YiGG. de speichern Dieses Thema bei YiGG. de speichern Dieses Thema bei YiGG. de speichern Dieses Thema bei YiGG. de speichern Dieses Thema bei YiGG. de speichern Dieses Thema bei YiGG. de speichern Dieses Thema bei YiGG. de speichern Dieses Thema bei YiGG. de speichern Dieses Thema bei YiGG. de speichern Dieses Thema bei YiGG. de speichern Dieses Thema bei YiGG. de speichern Dieses Thema bei YiGG. de speichern Dieses Thema bei YiGG. de speichern Dieses Thema bei YiGG. de speichern Dieses Thema bei YiGG. de speichern Dieses Thema bei YiGG. de speichern Dieses Thema bei YiGG. de speichern Dieses Thema bei YiGG. de speichern , nichts. Ich muss Zahlen mit einer definierten Anzahl von Bits umwandeln. Zum Beispiel auf 8 Bits 2 00000010 schrieb ich folgendes: gt b str (bin (Zahl)) 2: Das Ergebnis von bin () ist bereits ein String, keine Notwendigkeit, str () anzuwenden. Gt wenn len (b) Größe: gt b (size-len (b)) quotqquotb b. zfill (Größe) kann das tun. Gt Obwohl, was denkst du darüber nach. Heres ein anderer Weg (benötigt Python 2.7): gtgtgt quot bquot. format (42, 10) 0000101010 Diesen Beitrag in der Threadansicht öffnen Bericht Inhalt als unangemessen melden Re: Integer to binary 0-padded Vielen Dank an alle von euch. So endlich kann ich einfach schreiben Ltcodegt usrbinenv python def int2binPadded (Anzahl, Größe): quotquotquotDer Zweck dieser Funktion ist es, ganzzahlige Zahl in die Binärzahl umzuwandeln 0-padded. quotquotquot if type (number) int oder number lt 0: raise ValueError, quotashould ein positiver integerquot if type (Größe) int: heben Sie ValueError an, sollte ein Integerquot sein, wenn number gt (2size) -1: raise ValueError, quotnumber is too largequot konvertieren int zu bin Öffnen Sie diesen Beitrag in der Threadansicht Report Inhalt als unangemessen Re: Integer to binary 0-padded Als Antwort auf diesen Beitrag von Daniel Rentz-2 Am 06152011 07:33 AM, schrieb Daniel Rentz: gt Am 15.06.2011 14:29, schrieb Olivier LEMAIRE: gtgt Hallo, ich habe nach 2 Tagen nach einem Weg gesucht, um ganzzahlig umzuwandeln Gtgt zur Binärzahl 0-gepolstert, nichts. Ich muss Zahlen mit einer definierten Anzahl von Bits umwandeln. Zum Beispiel auf 8 Bits 2 00000010 gt gt bin (2) 2:.zfill (8) Nur um in den Thread zu haben (obwohl das OP mit 2.6 oder höher zu verwenden scheint) scheint die bin () - Funktion hinzugefügt zu haben 2.6 Das ist etwas, was ich wünschte, war zurück-portiert auf 2.4 und 2.5 als Ive genug geklemmt Kodierung gegen ältere Versionen von Python zu haben (re) geschrieben eine bin () Funktion mehrmals. Ah, gut. Diesen Beitrag in der Thread-Ansicht öffnen Inhalt melden als unangemessen Re: integer to binary 0-padded In Antwort auf diesen Beitrag von Olivier LEMAIRE Diesen Beitrag in der Thread-Ansicht öffnen Bericht Inhalt als unangemessen melden Re: integer to binary 0-padded Am Jun 15, 9: 33 Uhr, Olivier LEMAIRE lthade E-Mail gt schrieb: gt Youre richtig, ich benutze Python 2.6.6 Das funktioniert super in 2.6.5 und später (und wahrscheinlich früher). Sie müssen nur Ihre Platzhalter nummerieren. Der erste Satz von Klammern formatiert i (dein Wert), der zweite Satz spezifiziert das Feld mit (dh 8): Diesen Post in der Threadansicht öffnen Report Inhalt als unangemessen Re: Integer zu binärer 0-gepolsterter gtgtgt b. format (255, 1 (165) (255, 1 2 16)) 255 gtgtgt eval (b. format (-255, 1 2 16)) - 255 gtgtgt Öffnen Sie diesen Beitrag in der Threadansicht Bericht Inhalt als unangemessen Re: integer to binary 0-padded Am Fr, 17 Jun 2011 23:14:09 -0700, jmfauth schrieb: gtgtgtgt b. format (255, 1 2 16) gt 0b0000000011111111 Gtgtgtgt b. format (-255, 1 2 16) gt -0b0000000011111111 gtgtgtgt gtgtgtgt eval (b. format (255, 1 2 16)) gt 255 gtgtgt eval (b. format (-255, 1 2 16)) gt -255 Ist das eine Frage oder haben Sie sich einfach entschieden, einige Code zu teilen. Bitte lassen Sie genug Kontext, damit die Leser verstehen können, worüber Sie sprechen.
No comments:
Post a Comment