📌  相关文章
📜  如何在Python中将 Int 转换为字节?(1)

📅  最后修改于: 2023-12-03 14:52:49.713000             🧑  作者: Mango

将 Int 转换为字节

有时需要将整型数据转换为字节数据,以便于数据在网络中的传输或在文件中保存。在 Python 中,可以使用内置的 int.to_bytes() 方法将整型数据转换为字节数据。

方法一: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()

还可以使用 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'

以上两种方法都可以将整型数据转换为字节数据,可以根据不同场景选择使用。