import struct
theline = bytearray(('\x01\xA1\x00\x02\x03\x04\x09\x04'))
data_len = (theline[2] * 256) + theline[3]
#SOH, MSG_TYPE, LEN_MSB, LEN_LSB, DATA, CS, EOT
baseformat = '1s 1s 2x %ds 1s 1s' % (data_len)
#numremain = len(theline) - struct.calcsize(baseformat)
#format = '%s %ds' % (baseformat, numremain)
print struct.unpack(baseformat, theline)
#soh,msgType,data,cs,eot = struct.unpack(baseformat, theline)
#print "SOH: %s, Type: %s, Len: %s, Data: %s, CS: %s, EOT: %s" % (soh,msgType,data_len,data,cs,eot)
aW1wb3J0IHN0cnVjdAoKdGhlbGluZSA9IGJ5dGVhcnJheSgoJ1x4MDFceEExXHgwMFx4MDJceDAzXHgwNFx4MDlceDA0JykpCgpkYXRhX2xlbiA9ICh0aGVsaW5lWzJdICogMjU2KSArIHRoZWxpbmVbM10KCiNTT0gsIE1TR19UWVBFLCBMRU5fTVNCLCBMRU5fTFNCLCBEQVRBLCBDUywgRU9UCmJhc2Vmb3JtYXQgPSAnMXMgMXMgMnggJWRzIDFzIDFzJyAlIChkYXRhX2xlbikgCgojbnVtcmVtYWluID0gbGVuKHRoZWxpbmUpIC0gc3RydWN0LmNhbGNzaXplKGJhc2Vmb3JtYXQpCgojZm9ybWF0ID0gJyVzICVkcycgJSAoYmFzZWZvcm1hdCwgbnVtcmVtYWluKQoKcHJpbnQgc3RydWN0LnVucGFjayhiYXNlZm9ybWF0LCB0aGVsaW5lKQoKI3NvaCxtc2dUeXBlLGRhdGEsY3MsZW90ID0gc3RydWN0LnVucGFjayhiYXNlZm9ybWF0LCB0aGVsaW5lKQoKI3ByaW50ICJTT0g6ICVzLCBUeXBlOiAlcywgTGVuOiAlcywgRGF0YTogJXMsIENTOiAlcywgRU9UOiAlcyIgJSAoc29oLG1zZ1R5cGUsZGF0YV9sZW4sZGF0YSxjcyxlb3QpCg==