题目
读入 n 个整数,模拟将其以二进制字节流写入缓冲区(或文件)并重新读取解包,检验读写一致性。
输入格式:输入一行包含整数个数 n 以及 n 个整数,以空格分隔。
输出格式:读写比对一致输出 ok,否则输出 fail。
数据范围与约定:1 ≤ n ≤ 100。
思路与算法
1. 内存字节流 io.BytesIOio.BytesIO() 在内存中提供类似文件的二进制读写接口。
2. struct 二进制打包解包
使用 struct.pack 和 struct.unpack 将整数序列序列化为字节与反序列化。
完整程序
import io
import struct
data = list(map(int, input().split()))
n, a = data[0], data[1:1 + data[0]]
# 使用内存字节流 io.BytesIO 模拟二进制文件读写
buf = io.BytesIO()
# 写入长度与数组数据
buf.write(struct.pack("i", n))
buf.write(struct.pack(f"{n}i", *a))
# 重置流指针回开头读取验证
buf.seek(0)
m = struct.unpack("i", buf.read(4))[0]
b = list(struct.unpack(f"{m}i", buf.read(4 * m)))
print("ok" if m == n and a == b else "fail")运行示例
输入:
3 10 20 30输出:
ok