использование struct.pack для упаковки numpy.float32 в 4 байта

#struct #floating-point #pack

#структура #с плавающей запятой #пакет

Вопрос:

Всем привет, у меня возникли небольшие проблемы с упаковкой numpy.float32 с помощью функции struct.pack.

 f32 = 38.2
struct.pack('f', f32)
  

Шестнадцатеричное представление 38.2 в 32 битах равно 0x4218CCCD. однако, когда я использую терминал python для запуска предыдущего кода (после импорта соответствующих модулей), вывод:

 'xcdxccx18B'
  

Я не понимаю, почему он пропускает x42, который должен быть перед B.

Я использую 32-разрядную версию python 2.7 на 64-разрядной машине. Есть идеи?

Заранее спасибо.

Ответ №1:

Вы получили то, что хотели.

 >>> "x42" == "B"
True
  

Комментарии:

1. О, понятно, я не понимал, что, поскольку x42 находится в диапазоне ascii, он будет печатать символ ascii, несмотря на то, что он упакован как float.

2. Python не отслеживает, как создается байтовая строка. Он всегда будет выводить определенную байтовую строку одинаково.

Ответ №2:

x42 соответствует ASCII B .