Hoe Int naar Bytes te converteren in Python 2 en Python 3
-
Python 2.7 en 3 compatibel
int
metbytes
conversiemethode -
Python 3 Alleen
int
voorbytes
conversiemethoden - 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.
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()
methodestruct.pack()
methodeint.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.
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedInGerelateerde 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