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 - [email protected]
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor