struct module : getting at individual bits inside byte field

H

harijay

In my last post I had asked about reading data from a binary file
using the struct module.
Thanks to some excellent help , I have managed to read in successfully
most of the header . These are some time-voltage traces from a digital
to analog converter for my experiments output according to a format
mentioned here : ( http://www.dataq.com/support/techinfo/ff.htm)

I have a question about how to bitmask a bunch of bytes read in from
such a binary formatted file .

For eg the spec says the first two bytes have different parameters in
different bits .
Byte 1 Byte 0
SN16 SD9 SD8 SD7 SD6 SD5 SD4 SD3 SD2 SD1 SD0 T4 T3 T2 T1 T0

I am reading in the two bytes using the following code
import struct
f.seek(0)
element1_format = struct.Struct("<H")
(element1,) = element1_format.unpack(f.read(2))

Now element1 has type "str" . How do I apply a bitmask to this to get
at information in the component bits .

Since the entire file format has many such bitmasked fields and since
this is my first venture into binary formats and c-type structs , I
wanted to know how to read values inside a byte using python.

My few tries at using bitwise operators ( element1 & 0x001f) are
frustrated by messages that say " unsupported operand type(s) for &:
'str' and 'int' " .

How can I keep my string objects as bits and apply bitmasks to them

Any help in this will be greatly appreciated.
Thanks
hari
 
M

Marc Lucksch

harijay said:
import struct
Now element1 has type "str" .
..using python.
" unsupported operand type(s) for &: 'str' and 'int' " .

I'm going out on a limb here and guess this ain't really perl related,
so it's the wrong newsgroup.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,997
Messages
2,570,239
Members
46,827
Latest member
DMUK_Beginner

Latest Threads

Top