Hoe Int naar Bytes te converteren in Python 2 en Python 3

  1. Python 2.7 en 3 compatibel int met bytes conversiemethode
  2. Python 3 Alleen int voor bytes conversiemethoden
  3. Prestatie vergelijking

Conversie van int naar bytes is de omgekeerde bewerking van conversie van bytes naar int die is geïntroduceerd in de laatste HowTo tutorial. De meeste int-to-bytes-methoden die in dit artikel worden geïntroduceerd, zijn de omgekeerde methoden van bytes-naar-int-methoden.

muren verven zonder strepen
muren verven zonder strepen

Python 2.7 en 3 compatibel int met bytes conversiemethode

Je kan de pack functie in de Python struct-module gebruiken om het gehele getal in bytes in het specifieke formaat om te zetten.

>>> import struct
>>> struct.pack("B", 2)
'\x02'
>>> struct.pack(">H", 2)
'\x00\x02'
>>> struct.pack("<H", 2)
'\x02\x00'

Het eerste argument in de struct.pack functie is de notatiereeks die het formaat van de bytes specificeert, zoals bytelengte, singulariteit, bytevolgorde (kleine of grote endian), enz.

Python 3 Alleen int voor bytes conversiemethoden

Gebruik bytes om te converteren int naar bytes

Zoals aangegeven in het laatste artikel , bytes is een ingebouwd gegevenstype van Python 3. Je zou gemakkelijk kunnen gebruiken bytes om het gehele getal 0 ~ 255 om te zetten naar bytes gegevenstype.

>>> bytes([2])
b'\x02'

waarschuwing

Het gehele getal moet tussen de haakjes staan, anders krijgt u de, bytes object of size given by the parameter initialized with null bytes maar niet de bijbehorende bytes.

>>> bytes(3)
b'\x00\x00\x00'

Gebruik de int.to_bytes() methode om te converteren int naar bytes

Vanuit Python3.1 wordt een nieuwe methode met een geheel getal int.to_bytes() geïntroduceerd. Het is de omgekeerde conversiemethode int.from_bytes() zoals besproken in het laatste artikel.

>>> (258).to_bytes(2, byteorder="little")
b'\x02\x01'
>>> (258).to_bytes(2, byteorder="big")
b'\x01\x02'
>>> (258).to_bytes(4, byteorder="little", signed=True)
b'\x02\x01\x00\x00'
>>> (-258).to_bytes(4, byteorder="little", signed=True)
b'\xfe\xfe\xff\xff'

Het eerste argument is de geconverteerde bytes-gegevenslengte, het tweede argument byteorder definieert de bytevolgorde als klein of groot-endiaans en het optionele argument signed bepaalt of het complement van twee wordt gebruikt om het gehele getal weer te geven.

Prestatie vergelijking

In Python 3 hebt u 3 manieren om te converteren int naar bytes ,

  • bytes() methode
  • struct.pack() methode
  • int.to_bytes() methode

We controleren de uitvoeringstijd van elke methode om hun prestaties te vergelijken en geven u uiteindelijk de aanbeveling als u de snelheid van de uitvoering van uw code wilt verhogen.

>>> import timeint
>>> timeit.timeit('bytes([255])', number=1000000)
0.31296982169325455
>>> timeit.timeit('struct.pack("B", 255)', setup='import struct', number=1000000)
0.2640925447800839
>>> timeit.timeit('(255).to_bytes(1, byteorder="little")', number=1000000)
0.5622947660224895
Conversiemethode -Execution Time (1 miljoen keer)
bytes() 0.31296982169325455 s
struct.pack() 0.2640925447800839 s
int.to_bytes() 0,5622947660224895 s

Gebruik daarom de struct.pack() functie om de conversie van int naar bytes uit te voeren voor de beste uitvoeringsprestaties, hoewel deze al in Python 2-branch is geïntroduceerd.

Gerelateerde Artikelen - Python Bytes

  • Hoe bytes naar gehele getallen te converteren
  • Hoe bytes naar String te converteren in Python 2 en Python 3
  • Hoe String naar Bytes te converteren in Python