Splitting a float into bytes:

Simon Forman rogue_pedro at yahoo.com
Wed Jul 26 15:53:12 EDT 2006


Michael Yanowitz wrote:
> -----Original Message-----
> From: python-list-bounces+m.yanowitz=kearfott.com at python.org
> [mailto:python-list-bounces+m.yanowitz=kearfott.com at python.org]On Behalf
> Of Simon Forman
> Sent: Wednesday, July 26, 2006 2:56 PM
> To: python-list at python.org
> Subject: Re: Splitting a float into bytes:
>
>
> Michael Yanowitz wrote:
> > Hello:
> >
> >   For some reason I can't figure out how to split
> > a 4-byte (for instance) float number (such as 3.14159265359)
> > into its 4-bytes so I can send it via a socket to another
> > computer.
> >   For integers, it is easy, I can get the 4 bytes by anding like:
> > byte1 = int_val & 0x000000FF
> > byte2 = int_val & 0x0000FF00
> > byte3 = int_val & 0x00FF0000
> > byte4 = int_val & 0xFF000000
> >   But if I try to do that with floats I get:
> > >>> pi & 0xFF
> > Traceback (most recent call last):
> >   File "<stdin>", line 1, in ?
> > TypeError: unsupported operand type(s) for &: 'float' and 'int'
> >
> >   Is there some easy way to get what the bytes of the float are?
> >
> > Thanks in advance:
> > Michael Yanowitz
>
> The struct module.  (It also works for ints. ;-)  )
>
> http://docs.python.org/lib/module-struct.html
>
>
> HTH,
> ~Simon
>
>    Thanks, but maybe I am missing something.
> If I use pack, doesn't it have to be unpacked at the other end
> to make sense? The data will be picked up on some other computer
> by some other application probably written in C or C++. Would
> it have to be rewritten to unpack the data?
>
> Thanks in advance:
> Michael Yanowitz

It says in the docs "This module performs conversions between Python
values and C structs represented as Python strings."  This means, to
me, that the packed data will be in the format that C (and C++ I would
assume) uses.

You might have to mind the endian-ness if you're transferring data
between different architectures, but struct includes format specifiers
for this.

Have fun,
~Simon




More information about the Python-list mailing list