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