题目

读入 n 个整数,模拟将其以二进制字节流写入缓冲区(或文件)并重新读取解包,检验读写一致性。

输入格式:输入一行包含整数个数 n 以及 n 个整数,以空格分隔。

输出格式:读写比对一致输出 ok,否则输出 fail。

数据范围与约定:1 ≤ n ≤ 100。

思路与算法

1. 内存字节流 io.BytesIO
io.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