Manipulating raw data in Python

Chris Mellon arkanes at gmail.com
Tue Aug 21 13:48:04 EDT 2007


On 8/21/07, Looney, James B <james.b.looney at lmco.com> wrote:
>
>
>
> How do I get access to a data buffer in Python so that I can directly
> view/modify the data?  My buffer size is 256 (for this specific case) bytes.
>  Most of the time, I access want to access that data in 4-byte chunks,
> sometimes in single byte chunks.  How do I go about doing so?
>
> I'm certain someone's come across (and has probably asked this question a
> few times).  I've tried various searches, and I'm either missing the
> obvious, or am not using the right key words to get what I'm looking for.  I
> mostly get back results about audio, files, etc.  In my case, I'm using an
> HDLC protocol.
>
> A little background:
> I've got a socket connection.  On the server side is C++ code.  On the
> client (Python) side, I have a SWIG-ified C++ extension.  The extension is
> my messaging API, so that I can interact with the socket in a known manner
> on both sides of the connection.  In C++, I'd usually just use a method like
> "char *getBuffer()". However, Python seems to want to treat this as a string
> even though it really isn't.  I usually only get a few bytes before Python
> encounters data which looks like a NULL.
>

Python strings are mis-named and are are actually byte sequences. They
can contain arbitrary data, including NULLs. Your SWIG wrapper is
probably buggy and is using PyString_FromString instead of
PyString_FromStringAndSize.



More information about the Python-list mailing list