程序设计实训 - 题目 18 二进制数据报文构建与解析

2019301248-侯星宇 2022夏-程序设计实训 2022-07-29 23:42:48

程序设计实训 - Python

题目 18

img

代码实现

# 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)

结果如下

img

...全文
274 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

34

社区成员

发帖
与我相关
我的任务
社区描述
依托实践实训环节,为同学们更好掌握所需的基本技能,提供一个交流学习的社区。
python安全linux 高校
社区管理员
  • shawn904
  • weixin_44003872
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧