How to represent a sequence of raw bytes
bieffe62 at gmail.com
bieffe62 at gmail.com
Mon Dec 22 04:57:12 EST 2008
On 22 Dic, 03:23, "Steven Woody" <narkewo... at gmail.com> wrote:
> Hi,
>
> What's the right type to represent a sequence of raw bytes. In C, we usually do
>
> 1. char buf[200] or
> 2. char buf[] = {0x11, 0x22, 0x33, ... }
>
> What's the equivalent representation for above in Python?
>
> Thanks.
>
> -
> narke
Usually, if I have to manipulate bytes (e.g. computing checksum,
etc...) i just use a list of numbers:
buf = [11, 22, 33, ...]
then when I need to put it in a buffer similar to the one in C (e.g.
before sending a packet of bytes through a socket
or another I/O channel), I use struct.pack
import struct
packed_buf = struct.pack('B'*len(buf), buf )
similarly, if I get a packet of bytes from an I/O channel and I need
to do operation on them as single bytes, I do:
buf = struct.unpack('B'*len(packed_buf), packed_buf )
Note that struct.pack and struct.unpack can trasform packed bytes in
other kind of data, too ...
There are other - maybe more efficient - way of handling bytes in
python programs, like using array as already suggested, but, up
to now, I never needed them in my python programs, which are not real-
time stuff, but sometime need to process steady flows of
data.
Ciao
----
FB
More information about the Python-list
mailing list