En Wed, 05 Aug 2009 11:46:13 -0300, Martin P. Hellwig <martin.hell...@dcuktec.org> escribió:

On several occasions I have needed (and build) a parser that reads a binary piece of data with custom structure. For example (bogus one):

BE
+---------+---------+-------------+-------------+------+--------+
| Version | Command | Instruction | Data Length | Data | Filler |
+---------+---------+-------------+-------------+------+--------+
Version: 6 bits
Command: 4 bits
Instruction: 5 bits
Data Length: 5 bits
Data: 0-31 bits
Filler: filling 0 bits to make the packet dividable by 8

- Using a string for binary representation takes at least 8 times more memory for the packet than strictly necessary.

The size difference isn't so big; an integer takes 12 bytes and a string takes 24+len bytes. "Data" above would take 56 bytes max when stored as a string '0110001...' vs. 12 bytes when using a plain integer (sizes computed on Windows 32bits). Plus, doing bitwise operations in Python isn't a fast operation as it is in C, by example -- so your current implementation might be a quite good one (in pure Python, I mean).

--
Gabriel Genellina

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to