On Mar 29, 2:11 pm, Gary Herron <[EMAIL PROTECTED]> wrote: > [EMAIL PROTECTED] wrote: > > Hello, > > > I am having trouble writing the code to read a binary string. I would > > like to extract the values for use in a calculation. > > > Any help would be great. > > Without having looked at your code an any detail, may I humbly suggest > that you throw it all out and use the struct module: > > http://docs.python.org/lib/module-struct.html > > It is meant to solve this kind of problem, and it is quite easy to use. > > Gary Herron > > > > > Here is my function that takes in a string. > > > def parseSequence(data, start): > > > group_num = data[start:start+2] > > element_num = data[start+2:start+4] > > vl_field = data[start+4:start+8] > > length = struct.unpack('hh', vl_field)[0] > > value = data[start+8:(start+8+length)] > > pos = start+8+length > > element = (group_num+element_num) > > > if element == '\xfe\xff\x00\xe0': > > data = value > > > while start < length: > > group_num = data[start:start+2] > > element_num = data[start+2:start+4] > > vl_field = data[start+4:start+8] > > length = struct.unpack('hh', vl_field)[0] > > value = data[start+8:(start+8+length)] > > start = start+8+length > > element = (group_num+element_num) > > > if element == '\xfe\xff\x00\xe0': > > data = value > > > while start < length: > > group_num = data[start:start+2] > > element_num = data[start+2:start+4] > > vl_field = data[start+4:start+8] > > length = struct.unpack('hh', vl_field)[0] > > value = data[start+8:(start+8+length)] > > start = start+8+length > > element = (group_num+element_num) > > return element, start, value > > > else: > > return element, start, value > > > else: > > return element, pos, value > > > And, here is a sample string (I have split up and indented for > > readability). There is an identifier (\xfe\xff\x00\xe0) followed by > > the length of the nested values. > > > '\xfe\xff\x00\xe0\x18\x02\x00\x00 -length=536 > > \n0q\x00\x02\x00\x00\x001 > > \n0x\x00\x02\x00\x00\x0010 > > \n0\x80\x00\x02\x00\x00\x004 > > \n0\xa0\x00\x02\x00\x00\x000 > > \x0c0\x04\x00\xe8\x01\x00\x00 > > \xfe\xff\x00\xe0p\x00\x00\x00 -length=112 > > \n0\x82\x002\x00\x00\x0042.9068704277562\\-392.3545926477\ > > \189.182112099444 > > \n0\x84\x00\x0c\x00\x00\x008.9617062e-1 > > \n0\x86\x00\x10\x00\x00\x00127.378510918301 > > \x0c0\x06\x00\x02\x00\x00\x001 > > \xfe\xff\x00\xe0p\x00\x00\x00 -length=112 > > \n0\x82\x002\x00\x00\x0042.9068704277562\\-392.3545926477\ > > \189.182112099444 > > \n0\x84\x00\x0c\x00\x00\x001.629998e-1 > > \n0\x86\x00\x10\x00\x00\x0023.159729257873 > > \x0c0\x06\x00\x02\x00\x00\x004 > > \xfe\xff\x00\xe0t\x00\x00\x00 -length=116 > > \n0\x82\x002\x00\x00\x0042.9068704277562\\-392.3545926477\ > > \189.182112099444 > > \n0\x84\x00\x10\x00\x00\x001.26285318894435 > > \n0\x86\x00\x10\x00\x00\x00227.690980638769 > > \x0c0\x06\x00\x02\x00\x00\x003 > > \xfe\xff\x00\xe0t\x00\x00\x00 -length=116 > > \n0\x82\x002\x00\x00\x0042.9068704277562\\-392.3545926477\ > > \189.182112099444 > > \n0\x84\x00\x10\x00\x00\x001.52797639111557 > > \n0\x86\x00\x10\x00\x00\x00263.433384670643 > > \x0c0\x06\x00\x02\x00\x00\x002 ')- Hide quoted text -
Binaries can come from computers as from people. Synth sound & graphics. Start structuring primitive binaries: What operation can you run in real-time? I would probably have to learn natural language to make any sense of his keystrokes. Designing interface-first, you want another person to be pressing keys. Can we get Simon to teach us a couple distinct patterns? (That's we teach it; (that means:); no words: that's faster.) Get a couple ring tones, customiz-ing-, and you play a game.) Multi-pad consolled the PC. Can we give keystrokes its own thread? Sadly, our first one: get spatial delay timing up to speed. The sturdy keys (the discretes) have whisper roger that. Watch moving target? over raise riggings. -- http://mail.python.org/mailman/listinfo/python-list