On 03/12/14 18:18, shweta kaushik wrote:
I need help for doing this task. I know it will be simple but I am not able to do it.
Your description of the task is not very precise so I'll make some guesses below.
output_message_packet= fe01b84100000000000000002756fe02fe01b94100000.... I want to split this into separate message packets like this: fe01b84100000000000000002756fe02 fe01b94100000000000000006239fe02
It looks like the packet terminator is either fe02 or a fixed length record. It's not clear whether the fixed length is accidental or deliberate or whether its the terminator that is coincidentally the same. I'm guessing its probably based on terminator...
To split by 'fe02' just use string split then add the separator back on: sep = 'fe02' packets = [pkt+sep for pkt in data.split(sep)] If it is based on length it will look something like: data = [] while s: data.append(s[:length]) s = s[length:]
After this I want to split this into bytes: fe 01 b8 41 00 00 00 00 00 00 00 00 27 56 fe 02
This is the same split by length problem applied to each packet with length 2. In fact if it is split by length in both you could write a helper function: def split_by_length(s,length): data = [] while s: data.append(s[:length]) s = s[length:] return data And call it with packets = split_by_length(inputData, packetLength) bytes = [split_by_length(p,2) for p in packets] HTH -- Alan G Author of the Learn to Program web site http://www.alan-g.me.uk/ http://www.amazon.com/author/alan_gauld Follow my photo-blog on Flickr at: http://www.flickr.com/photos/alangauldphotos _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor