34
社区成员




# NPU 程序设计实训 HW18 二进制数据报文构建与解析
import struct
import binascii # 包含很多方法来转换二进制和各种ASCII编码的二进制表示法
# 构建报文
def pack_message(data_dict):
try:
fmt = '>b b 16s i i b'
return struct.pack(fmt, data_dict['type'], data_dict['csum'],
data_dict['id'].encode('utf-8'), data_dict['dis1'],
data_dict['dis2'], data_dict['count'])
except:
return "Parameter Error."
# 解析报文
def unpack_message(message):
try:
result = {}
fmt = '>b b 16s i i b'
result['type'], result['csum'], result['id'], result['dis1'], result['dis2'], \
result['count'] = struct.unpack(fmt, message)
result['id'] = result['id'].decode('utf-8')
return result
except:
return "Parameter Error."
# 测试函数
data_dict = {'type': 50, 'csum': 1, 'id': 'abcdpopopo', 'dis1': 300, 'dis2': 100, 'count': 20}
message = pack_message(data_dict)
print(binascii.hexlify(message))
data_dict = unpack_message(message)
print(data_dict)
结果如下