Возникли проблемы при преобразовании шестнадцатеричной строки в двойную - PullRequest
0 голосов
/ 10 апреля 2019

У меня есть шестнадцатеричная строка с прямым порядком байтов (например, 'E61000003C9BFAE53893'), которую я пытаюсь преобразовать в double.Я пробовал следующее:

struct.unpack('<d', binascii.unhexlify('E61000003C9BFAE53893'))

, но я продолжаю получать

struct.error: unpack requires a buffer of 8 bytes

Я проверил вывод binascii.unhexlify ('E61000003C9BFAE53893'), и он выглядит правильно:

>> print (binascii.unhexlify('E61000003C9BFAE53893'))

b'\xe6\x10\x00\x00<\x9b\xfa\xe58\x93'

, поэтому я не уверен, в чем проблема.

Для некоторого контекста у меня есть набор координатных данных, закодированных как WKB, но геопанда только поддерживает WKT.Я подумал, что было бы легко написать функцию для преобразования одной в другую (или WKB в плавающие), но она оказалась более сложной, чем я ожидал.

1 Ответ

0 голосов
/ 13 апреля 2019

0xE61000003C9BFAE53893 слишком длинно, чтобы быть двойным.Дабл это 8 байтов, а это 9 ... иш?Если вы посмотрите на второй в вашем выводе результат, то это "0xe58".

struct.unpack принимает только 8-байтовые буферы согласно сообщению об ошибке.

...