数据打包与解包 (高教社,《Python编程基础及应用》习题5-3)

题目

现在一台计算机A要通过串口把下述列表中的数据发送到另一台计算机B。发送前,计算机A需要把数据打包成bytearray,然后再通过串口发送;计算机B收到bytearray的原始数据后,需要将原始数据解包成跟发送端一样的列表。请编写两个函数pack及unpack,其中,pack负责将一个列表转换成bytearray或bytes,unpack负责将bytearray或bytes还原成列表。

函数接口定义:

def pack(d)   #参数d为一个列表,返回bytearray或bytes
...
def unpack(d) #参数d为一个bytearray或bytes, 返回列表

裁判测试程序样例:

i = eval(input())
assert(type(i) == list)

r = pack(i)
assert type(r)==bytearray or type(r)==bytes

o = unpack(r)
print(i==o)

 输入样例:

['2018993', 'Andy Hu', 26, 'male', True, 175.3, 78, [12,99,77]]

输出样例:

True

解题

题目代码:

def pack(d):
    return str(d).encode()
def unpack(d):
    return eval(d.decode())

代码内相关内容解释:

str()函数

是将列表d内的元素都强制转换成str类型

encode()方法使用

str.encode(encoding='UTF-8',errors='strict')

encoding:表示要使用的编码,默认为UTF-8

errors:表示设置不同错误的处理方案,默认为strict,指编码错误引起一个UnicodeError

题目代码均使用默认即可,输出结果为bytes类型

decode()方法使用

bytes.decode(encoding="utf-8", errors="strict")

encoding:表示要使用的编码,默认为UTF-8

errors:表示设置不同错误的处理方案,默认为strict,指编码错误引起一个UnicodeError

题目代码均使用默认即可,输出结果为str类型

eval()函数

执行字符串表达式并返回其值

字符串表达式可以包含变量、函数调用、运算符和其他Python语法元素

题目代码指将str类型转换回原本类型

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值