接收带字符的字符串

时间:2010-06-02 08:03:46

标签: python parsing endianness

我在python中很新。

我正在使用数据值接收(通过pyserial)字符串。 如何将这些数据解析为特定的数据结构?

我知道

 0-1 byte : id
 2-5 byte : time1 =>but little endian (lsb first)
 6-9 byte : time2 =>but little endian (lsb first)

我正在寻找一个功能:

def parse_data(string):
  data={}
  data['id'] = ??
  data['time1'] = ??
  data['time2'] = ??
  return data

感谢

2 个答案:

答案 0 :(得分:2)

struct module应该正是您正在寻找的。

import struct
# ...
data['id'], data['time1'], data['time2'] = struct.unpack("<HII", string)

在格式字符串中,<表示“将所有内容解释为小端,并且不使用本机对齐”,H表示“unsigned short”,I表示“unsigned int” “

答案 1 :(得分:2)

import struct
def parse_data(string):
    return dict(zip(['id','time','time2'],struct.unpack("<HII", string)))