[Python-es] big-endian a little-endian

Marc Garcia garcia.marc en gmail.com
Mar Mayo 9 11:01:01 EDT 2017


Lo que deberías hacer es llamar a array_float32.byteswap().newbyteorder()
antes de guardar el array.

byteswap() cambia los bytes "físicamente", son en la memoria pasarás de
tener 0001 a 1000, y newbyteorder() le dice a numpy como es el endianness
de los datos. En newbyteorder() te lo deberías poder ahorrar si no vas a
hacer nada más con el array, pero debería ser inmediato, solo cambia una
flag, con lo cual creo que mejor hacerlo.

On Tue, May 9, 2017 at 3:25 PM, Rolando Paz <flxpaz en gmail.com> wrote:

> Hola a todos...
>
> Estoy usando este código para convertir mis datos uin32 a float32.
>
> import numpy as np
>
> array_float32 = np.fromfile('pulsar_test_01_19273_1024ch.bin',
> dtype=np.uint32).astype(np.float32)
>
> with open("pulsar_test_01_19273_1024ch_big", "wb") as output_array:
>     output_array.write(array_float32.tostring())
>
> todo lo hace bien...sin embargo mis datos uint32 son big-endian y yo
> necesito que los float32 sean little-endian.
>
> He leído que podría usar byteswap(True), pero aún no se si esta es mi
> solución.
>
> Pueden sugerirme algo?
>
> Saludos
>
> Rolando
>
>
>
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> https://mail.python.org/mailman/listinfo/python-es
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20170509/ff040631/attachment.html>


Más información sobre la lista de distribución Python-es