Voglio costruire un piccolo formattatore in python darmi indietro le numerici valori incorporati nelle linee di stringhe esadecimali.riordino ordine dei byte nella stringa esadecimale (python)
È una parte centrale del mio programma di formattazione e dovrebbe essere abbastanza veloce per il formato oltre 100 righe/sec (ogni riga circa ~ 100 caratteri).
Il seguente codice dovrebbe dare un esempio in cui sto attualmente bloccato.
'data_string_in_orig' mostra il formato di ingresso. Deve essere byte scambiati per ogni parola. è necessaria Lo swap da 'data_string_in_orig' a 'data_string_in_swapped'. Alla fine ho bisogno della struttura accesso come mostrato. Il risultato atteso è all'interno del commento.
Grazie in anticipo Wolfgang R
#!/usr/bin/python
import binascii
import struct
## 'uint32 double'
data_string_in_orig = 'b62e000052e366667a66408d'
data_string_in_swapped = '2eb60000e3526666667a8d40'
print data_string_in_orig
packed_data = binascii.unhexlify(data_string_in_swapped)
s = struct.Struct('<Id')
unpacked_data = s.unpack_from(packed_data, 0)
print 'Unpacked Values:', unpacked_data
## Unpacked Values: (46638, 943.29999999943209)
exit(0)
'array.byteswap'. Dolce. Immagino che andrò avanti e non postare la kludgy decomprimere la soluzione big-endian/repack little-endian che ho cucinato ... – Triptych
Vai avanti e post! Può essere utile avere più di un modo per risolvere un problema. – unutbu
Grazie, questo è stato veloce e perfetto per me. Tra l'altro 100k linee in 5 sec. –