Chcę zbudować mały formatator w pythonie, zwracając wartości liczbowe osadzone w liniach ciągów heksadecymalnych.uporządkuj kolejność bajtów w łańcuchu szesnastkowym (python)
Jest to centralna część mojego formatyzatora i powinna być rozsądnie szybka do formatu w tempie ponad 100 linii/s (każda linia około ~ 100 znaków).
Poniższy kod powinien dawać przykład, gdzie jestem obecnie zablokowany.
"data_string_in_orig" pokazuje podany format wejściowy. Musi to być bajt zamieniony na każde słowo. Konieczna jest zamiana z "data_string_in_orig" na "data_string_in_swapped". Koniec końców potrzebuję dostępu do struktury, jak pokazano. Oczekiwany wynik znajduje się w komentarzu.
góry dzięki 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)
'tablica.byteswap'. Słodkie. Zgaduję, że pójdę dalej i nie opublikuję kludu rozpakowuję big-endian/repack-little-endianowe rozwiązanie, które przygotowywałem ... – Triptych
Śmiało i opublikuj to! Może być przydatny więcej niż jeden sposób rozwiązania problemu. – unutbu
Dzięki, to było szybkie i idealne dla mnie. Przy okazji 100k linii w 5 sek. –