Domanda

the struct Il modulo è utile quando stai cercando di convertire i dati in eda formati binari.Tuttavia, recentemente mi sono imbattuto in una specifica di formato di file che utilizza il formato del punto flottante Binary16 .Ho guardato attraverso la documentazione di Python, ma non riesco a trovare nulla che possa convertire da e da esso.Quale sarebbe il modo migliore per convertire questi dati da / da Python Gloats?

È stato utile?

Soluzione

Puoi farlo approssimativamente come se lo faresti in c - I.e., Penso, approssimativamente come questo ...:

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
.

Altri suggerimenti

Il post del blog del ragazzo dàun'implementazione in entrambi e in Python.Utilizza il modulo struct, quindi decodizza manualmente.Non è tutto ciò che complicato una conversione.

Una ricerca rapida di Google alzata http://packages.python.org/bigfloat/ che dice che ha un contesto per la manipolazione dei numeri flottanti binary16.Non ho familiarità con il pacchetto me stesso, però, quindi non potrei dirti nulla di come usarlo (almeno, niente di più di quanto tu possa leggere nella documentazione).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top