struct.pack函数是Python中的一个函数,用于将指定的数据按照指定的格式打包成二进制数据,以便于在网络传输或文件存储中使用。其中,格式字符串用于描述打包的数据类型和顺序,具体格式符号和含义如下:

  • 'x':占位符,不进行任何打包操作
  • 'c':char类型,打包为长度为1的字符串
  • 'b':signed char类型,打包为长度为1的整数
  • 'B':unsigned char类型,打包为长度为1的整数
  • 'h':short类型,打包为长度为2的整数
  • 'H':unsigned short类型,打包为长度为2的整数
  • 'i':int类型,打包为长度为4的整数
  • 'I':unsigned int类型,打包为长度为4的整数
  • 'l':long类型,打包为长度为4的整数
  • 'L':unsigned long类型,打包为长度为4的整数
  • 'f':float类型,打包为长度为4的单精度浮点数
  • 'd':double类型,打包为长度为8的双精度浮点数
  • 's':char[]类型,打包为指定长度的字符串
  • 'p':char[]类型,打包为指定长度的字符串,以'\x00'结束
  • 'P':void*类型,打包为Python对象的指针

例子:

import struct

# 打包成二进制数据
packed_data = struct.pack('3s 2i f d', b'abc', 2, 3, 4.5, 6.7)

# 解析二进制数据
unpacked_data = struct.unpack('3s 2i f d', packed_data)

print(packed_data)
print(unpacked_data)

输出:

b'abc\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\xcd\xcc\x88@\xcd\xcc\xcc\xcc\xcc\xcc\x18\x40'
(b'abc', 2, 3, 4.5, 6.7)

在上面的例子中,我们将字符串'abc'、整数2和3、单精度浮点数4.5和双精度浮点数6.7按照指定的格式'3s 2i f d'打包成二进制数据,其中'3s'表示长度为3的字符串,'2i'表示两个整数,'f'表示单精度浮点数,'d'表示双精度浮点数。然后我们又将这个二进制数据解析成元组,得到了和原始数据一致的结果。

Python的structpack

原文地址: https://www.cveoy.top/t/topic/Xdy 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录