题目
现在一台计算机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类型转换回原本类型