binary16 в Python

struct модуль полезен, когда Вы пытаетесь преобразовать данные в и от двоичных форматов. Однако недавно я столкнулся со спецификацией формата файла, которая использует binary16 формат с плавающей точкой. Я просмотрел документацию Python, но не могу найти ничего, что может преобразовать в и от нее. Каков был бы лучший способ преобразовать эти данные в плавания Python?

5
задан icktoofay 18 July 2010 в 04:15
поделиться

3 ответа

Вы можете сделать это примерно так, как вы сделали бы это в C - то есть, я думаю, примерно так...:

def tofloat(b16):
  sign = -1 if b16 & 0x8000 else +1
  expo = ( b16 & 0x7C00 ) >> 10
  prec = b16 & 0x03FF
  if expo == 0:
    return sign * (2.0 ** -24) * prec
  elif expo == 0x1F:
    return sign * float('inf')
  prec |= 0x0400
  return sign * (2.0 ** (expo - 25)) * prec
4
ответ дан 14 December 2019 в 08:39
поделиться

Сообщение в блоге этого парня дает реализацию на обоих языках и на Python. Он использует модуль struct , а затем декодирует его вручную. Это не так уж и сложно для преобразования.

2
ответ дан 14 December 2019 в 08:39
поделиться

Быстрый поиск в Google обнаружил http://packages.python.org/bigfloat/ , в котором говорится, что у него есть контекст для управления двоичными16 числами с плавающей запятой. Я сам не знаком с пакетом, поэтому не могу ничего рассказать о том, как его использовать (по крайней мере, ничего, кроме того, что вы сами можете прочитать в документации).

1
ответ дан 14 December 2019 в 08:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: