binascii
— Konvertera mellan binär och ASCII¶
Modulen binascii
innehåller ett antal metoder för att konvertera mellan binära och olika ASCII-kodade binära representationer. Normalt sett använder du inte dessa funktioner direkt utan använder istället omslagsmoduler som base64
. Modulen binascii
innehåller lågnivåfunktioner som är skrivna i C för högre hastighet och som används av modulerna på högre nivå.
Anteckning
a2b_*
-funktioner accepterar Unicode-strängar som endast innehåller ASCII-tecken. Andra funktioner accepterar endast bytesliknande objekt (t.ex. bytes
, bytearray
och andra objekt som stöder buffertprotokollet).
Ändrad i version 3.3: ASCII-only unicode-strängar accepteras nu av funktionerna a2b_*
.
Modulen binascii
definierar följande funktioner:
- binascii.a2b_uu(string)¶
Konvertera en enda rad med uuencoded data tillbaka till binär och returnera binärdata. Rader innehåller normalt 45 (binära) byte, med undantag för den sista raden. Raddata kan följas av blanksteg.
- binascii.b2a_uu(data, *, backtick=False)¶
Konvertera binära data till en rad med ASCII-tecken, returvärdet är den konverterade raden, inklusive ett tecken för ny rad. Längden på data bör vara högst 45. Om backtick är true representeras nollor av
'`'
istället för mellanslag.Ändrad i version 3.7: Lagt till parametern backtick.
- binascii.a2b_base64(string, /, *, strict_mode=False)¶
Konverterar ett block med base64-data tillbaka till binär och returnerar de binära data. Mer än en rad kan skickas åt gången.
Om strict_mode är true kommer endast giltiga base64-data att konverteras. Ogiltiga base64-data kommer att ge upphov till
binascii.Error
.Giltig base64:
Överensstämmer med RFC 3548.
Innehåller endast tecken från base64-alfabetet.
Innehåller inga överflödiga data efter utfyllnad (inklusive överflödig utfyllnad, nya linjer etc.).
Börjar inte med en utfyllnad.
Ändrad i version 3.11: Parametern strict_mode har lagts till.
- binascii.b2a_base64(data, *, newline=True)¶
Konverterar binära data till en rad ASCII-tecken i base64-kodning. Returvärdet är den konverterade raden, inklusive ett tecken för ny rad om newline är sant. Utdata från denna funktion överensstämmer med RFC 3548.
Ändrad i version 3.6: Parametern newline har lagts till.
- binascii.a2b_qp(data, header=False)¶
Konverterar ett block med data som kan skrivas ut med citattecken tillbaka till binära data och returnerar de binära data. Mer än en rad kan skickas åt gången. Om det valfria argumentet header är närvarande och true, kommer understrykningar att avkodas som mellanslag.
- binascii.b2a_qp(data, quotetabs=False, istext=True, header=False)¶
Konverterar binära data till en eller flera rader med ASCII-tecken i citattryckbar kodning. Returvärdet är den konverterade raden/raderna. Om det valfria argumentet quotetabs är närvarande och sant, kommer alla tabbar och mellanslag att kodas. Om det valfria argumentet istext är närvarande och true, kodas inte nya rader men efterföljande blanksteg kodas. Om det valfria argumentet header är närvarande och sant, kommer mellanslag att kodas som understrykningstecken enligt RFC 1522. Om det valfria argumentet header är närvarande och false, kommer även tecken för nya rader att kodas; annars kan omvandling av radavbrott korrumpera den binära dataströmmen.
- binascii.crc_hqx(data, value)¶
Beräkna ett 16-bitars CRC-värde för data, med värde som första CRC, och returnera resultatet. Detta använder CRC-CCITT-polynomet x16 + x12 + x5 + 1, ofta representerat som 0x1021. Denna CRC används i binhex4-formatet.
- binascii.crc32(data[, value])¶
Beräkna CRC-32, den osignerade 32-bitars kontrollsumman för data, med utgångspunkt från en initial CRC på värde. Standardvärdet för den initiala CRC:n är noll. Algoritmen är konsekvent med ZIP-filens kontrollsumma. Eftersom algoritmen är utformad för att användas som en kontrollsummealgoritm är den inte lämplig att använda som en allmän hashalgoritm. Använd enligt följande:
print(binascii.crc32(b"hej världen")) # Eller, i två delar: crc = binascii.crc32(b"hello") crc = binascii.crc32(b" världen", crc) print('crc32 = {:#010x}'.format(crc))
Ändrad i version 3.0: Resultatet är alltid osignerat.
- binascii.b2a_hex(data[, sep[, bytes_per_sep=1]])¶
- binascii.hexlify(data[, sep[, bytes_per_sep=1]])¶
Returnerar den hexadecimala representationen av binära data. Varje byte i data konverteras till motsvarande 2-siffriga hexadecimala representation. Det returnerade bytes-objektet är därför dubbelt så långt som längden på data.
Liknande funktionalitet (men som returnerar en textsträng) är också lättillgänglig med metoden
bytes.hex()
.Om sep anges måste det vara ett str- eller bytes-objekt med ett enda tecken. Det kommer att infogas i utdata efter varje bytes_per_sep indatabytes. Separatorplaceringen räknas som standard från den högra änden av utmatningen, om du vill räkna från vänster anger du ett negativt bytes_per_sep-värde.
>>> import binascii >>> binascii.b2a_hex(b'\xb9\x01\xef') b'b901ef' >>> binascii.hexlify(b'\xb9\x01\xef', '-') b'b9-01-ef' >>> binascii.b2a_hex(b'\xb9\x01\xef', b'_', 2) b'b9_01ef' >>> binascii.b2a_hex(b'\xb9\x01\xef', b' ', -2) b'b901 ef'
Ändrad i version 3.8: Parametrarna sep och bytes_per_sep har lagts till.
- binascii.a2b_hex(hexstr)¶
- binascii.unhexlify(hexstr)¶
Returnerar binärdata som representeras av den hexadecimala strängen hexstr. Denna funktion är inversen av
b2a_hex()
. hexstr måste innehålla ett jämnt antal hexadecimala siffror (som kan vara versaler eller gemener), annars uppstår ettError
undantag.Liknande funktionalitet (som endast accepterar argument i form av textsträngar, men som är mer liberal när det gäller blanksteg) kan också nås med klassmetoden
bytes.fromhex()
.
- exception binascii.Error¶
Undantag som uppstår vid fel. Dessa är vanligtvis programmeringsfel.
- exception binascii.Incomplete¶
Undantag på grund av ofullständiga data. Dessa är vanligtvis inte programmeringsfel, men kan hanteras genom att läsa lite mer data och försöka igen.