📅  最后修改于: 2023-12-03 14:52:49.713000             🧑  作者: Mango
有时需要将整型数据转换为字节数据,以便于数据在网络中的传输或在文件中保存。在 Python 中,可以使用内置的 int.to_bytes()
方法将整型数据转换为字节数据。
int.to_bytes(length, byteorder, *, signed=False)
方法将整型数据转换为字节数据。其中,
length
表示生成的字节数,最小值为 1。如果要转换的整型数据超出了指定字节数,则会报错。byteorder
表示字节序,默认为 'big'
,即高位在前。如果要使用低位在前的字节序,可以输入 'little'
。下面是一个例子,将整数 10 转换为 2 字节的字节数据:
i = 10
b = i.to_bytes(2, byteorder='big')
print(b)
运行结果为:
b'\x00\n'
在这里,16 进制数 0x0a
表示数值 10,字节数据 \x00\n
表示整数 10 的 2 个字节的二进制表示。
还可以使用 struct.pack(fmt, v1, v2, ...)
方法将多个数据打包成字节数据。其中,
fmt
是打包格式字符串,表示打包的数据类型、顺序和字节数。v1, v2, ...
是要打包的数据,可以是数字或字符串等。下面是一个例子,将整数 100 和字符串 'abc'
打包为 6 字节的字节数据:
import struct
i = 100
s = 'abc'
b = struct.pack('>IH', i, len(s)) + s.encode('ascii')
print(b)
运行结果为:
b'\x00\x00\x00d\x00\x03abc'
在这里,'>IH'
是格式字符串,表示先打包一个无符号整数和一个无符号短整数(高位在前),共 6 个字节。\x00\x00\x00d
表示整数 100 的 4 个字节的二进制表示,\x00\x03
表示字符串长度为 3,后面跟着 3 个 ASCII 码对应的字节数据 'abc'
。
以上两种方法都可以将整型数据转换为字节数据,可以根据不同场景选择使用。