12.13 binascii -- Conversione tra binario e ASCII

Il modulo binascii contiene un certo numero di metodi per convertire tra binario e vari tipi di rappresentazioni di sequenze binarie in ASCII. Normalmente, non si devono usare queste funzioni direttamente; è meglio usare altri moduli che invece le incapsulano (estendendole), come uu o binhex. Questo modulo esiste solo per permettere una gestione più veloce di grosse quantità di dati, che solitamente è piuttosto lenta in Python.

Il modulo binascii definisce le seguenti funzioni:

a2b_uu( string)
Converte una singola riga di dati uuencoded in binario e restituisce tali dati. Le righe di solito contengono 45 byte (binari), tranne l'ultima. Alla riga di dati possono seguire degli spazi vuoti.

b2a_uu( data)
Converte i dati binari in una riga di ASCII caratteri ed il valore restituito viene convertito in una riga, incluso un codice di controllo di fine riga. La lunghezza di data dovrebbe essere al massimo di 45 byte.

a2b_base64( string)
Converte un blocco di dati base64 in binario e lo restituisce. È possibile passare più di una riga per volta.

b2a_base64( data)
Converte i dati binari in una riga di ASCII caratteri codificata in base64. Il valore restituito viene convertito in una riga, incluso un codice di controllo di fine riga. La lunghezza di data dovrebbe essere al più di 57 byte attenendosi allo standard per base64.

a2b_qp( string[, header])
Converte un blocco di dati caratteri quoted-printable in binario, restituendo i dati binari. Si può passare più di una riga per volta. Se è presente l'argomento facoltativo header ed ha valore vero, i caratteri di trattino basso verranno decodificati come spazi.

b2a_qp( data[, quotetabs, istext, header])
Converte dati binari in una o più righe di caratteri ASCII codificati come quoted-printable. Il valore restituito sono le righe convertite. Se l'argomento facoltativo quotetabs è presente e vale true (NdT: vero), verranno codificati tutti gli spazi e tutte le tabulazioni. Se è presente l'argomento facoltativo header e vale true, gli spazi verranno codificati come i caratteri di trattino basso come da RFC1522. Se invece l'argomento facoltativo header vale false (NdT: falso), i caratteri di fine riga verranno codificati come tali, per prevenire corruzioni dei dati in caso di conversione di flussi di dati binari.

a2b_hqx( string)
Converte i dati ASCII formattati con binhex4 in binario, senza eseguire una decompressione RLE. La stringa dovrebbe contenere un numero completo di byte binari, o (nel caso dell'ultima parte di dati binhex4) dovrebbe mantenere tutti i bit a zero.

rledecode_hqx( data)
Esegue una decompressione RLE sui dati, come dallo standard binhex4. L'algoritmo usa 0x90 come indicatore di ripetizione dopo un byte, seguito da un numero che rappresenta il conteggio delle occorrenze. Il conteggio di 0 specifica il valore del byte di 0x90. Questa funzione restituisce i dati decompressi, a meno che i dati di input non finiscano con un indicatore di ripetizione orfano, nel qual caso verrà sollevata l'eccezione Incomplete.

rlecode_hqx( data)
Esegue una compressione RLE di tipo binhex4 sui dati, data, in input e restituisce i dati compressi.

b2a_hqx( data)
Esegue una traduzione hexbin4 da binario ad ASCII e restituisce la stringa risultante. L'argomento dovrebbe essere già codificato con RLE, e dovrebbe avere una lunghezza divisibile per 3 (possibilmente con l'eccezione per l'ultimo frammento).

crc_hqx( data, crc)
Calcola il valore crc in binhex4 dei dati data, a partire da un crc iniziale e restituendo il risultato.

crc32( data[, crc])
Calcola il CRC-32, il checksum a 32 bit dei dati, a partire da un eventuale crc iniziale. È consistente con il checksum ZIP file. Dato che questo algoritmo è stato progettato come algoritmo di checksum, non è adatto per essere usato come un algoritmo di hash. Il giusto utilizzo è il seguente:
    print binascii.crc32("ciao mondo")
    # Oppure, in due pezzi:
    crc = binascii.crc32("ciao")
    crc = binascii.crc32(" mondo", crc)
    print crc

b2a_hex( data)
hexlify( data)
Restituisce la rappresentazione esadecimale dei dati, data, binari. Ogni byte dei dati viene convertito in una rappresentazione esadecimale a 2 cifre. La stringa risultante ha quindi una lunghezza doppia rispetto ai dati binari data.

a2b_hex( hexstr)
unhexlify( hexstr)
Restituisce i dati binari rappresentati dalla stringa esadecimale hexstr. Questa funzione è l'inverso di b2a_hex(). hexstr deve contenere un numero pari di cifre decimali (che possono essere sia maiuscole che minuscole), altrimenti viene sollevata l'eccezione TypeError.

exception Error
Eccezione sollevata in caso di errori, per lo più di programmazione.

exception Incomplete
Eccezione sollevata in caso di dati incompleti. Questi non sono di solito errori di programmazione, ma possono essere evitati leggendo un po' più di dati e riprovando ad elaborarli.

Vedete anche:

Modulo base64:
Supporto per la codifca base64 usata in messaggi di posta elettronica MIME.

Modulo binhex:
Supporto per il formato binhex usato su Macintosh.

Modulo uu:
Supporto per la codifica UU usata su Unix.

Modulo quopri:
Supporto per la codifica quoted-printable usata in messaggi di posta elettronica MIME.
Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.