转:https://blog.csdn.net/weiwangchao_/article/details/80395941

data=pack('<' + ('h' *len(data)),*data)

‘<’ : 小端('little- endian'):高位放在低地址段

'h':代表C struct中的short类型,占2位

* len(data):data中的每一元素都用short类型(2位)表示

*data:打包的为列表

首先将参数1,2,3打包,打包前1,2,3明显属于python数据类型中的integer,pack后就变成了C结构的二进制串,转成 python的string类型来显示就是  '\x01\x00\x00\x00\x02\x00\x03'。由于本机是小端('little- endian',关于大端和小端的区别请参照这里, 故而高位放在低地址段。i 代表C struct中的int类型,故而本机占4位,1则表示为01000000;h 代表C struct中的short类型,占2位,故表示为0200;同理b 代表C struct中的signed char类型,占1位,故而表示为03。

在Format string 的首位,有一个可选字符来决定大端和小端,列表如下:

如果没有附加,默认为@,即使用本机的字符顺序(大端or小端),对于C结构的大小和内存中的对齐方式也是与本机相一致的(native),

比如刚才的小程序的后半部分,使用的format string中首位为!,即为大端模式标准对齐方式,故而输出的为'\x00\x00\x00\x01\x00\x02\x03',其中高位自己就被放在内存的高地址位了。

struct.pack()相关推荐

  1. python struct pack解析_python struct pack

    这个struct主要是用来处理C结构数据的,读入时先转换为Python的字符串类型,然后再转换为Python的结构化类型,比如元组(tuple)啥的~ 一般输入的渠道来源于文件或者网络的二进制流. 在 ...

  2. python struct.pack()函数 (返回一个字节对象,其中包含根据格式字符串fmt打包的值v1,v2,...)

    def pack(fmt, *args): # known case of _struct.pack"""pack(fmt, v1, v2, ...) -> byt ...

  3. python struct pack一个数组_Python中struct.pack的一个疑问

    展开全部 的确很奇怪.我试验了10几分钟,你按下面的方法来做就可以正确.import struct zzz = ("{Type:2}").encode("utf-8&qu ...

  4. python3 struct.pack方法报错argument for 's' must be a bytes object

    在python3下使用struct模块代码 fileHead = struct.pack('128sl', os.path.basename(filePath),os.stat(filePath).s ...

  5. python中pack函数,python中struct.pack()函數和struct.unpack()函數

    python中的struct主要是用來處理C結構數據的,讀入時先轉換為Python的字符串類型,然后再轉換為Python的結構化類型,比如元組(tuple)啥的~.一般輸入的渠道來源於文件或者網絡的二 ...

  6. python unpack_python中struct.pack()函数和struct.unpack()函数

    python中的struct主要是用来处理C结构数据的,读入时先转换为Python的字符串类型,然后再转换为Python的结构化类型,比如元组(tuple)啥的~.一般输入的渠道来源于文件或者网络的二 ...

  7. python struct pack string_struct (String) – Python 中文开发手册

    Python 中文开发手册 struct (String) - Python 中文开发手册 该模块执行Python值与C结构之间的转换,表示为Python字符串.这可用于处理存储在文件或网络连接中的二 ...

  8. python struct pack string_python struct pack fmt格式

    Python使用struct处理二进制 有的时候需要用python处理二进制数据,比如,存取文件,socket操作时.这时候,可以使用python的struct模块来完成.可以用 struct来处理c ...

  9. header = struct.pack(!i, n) struct.error: 'i' format requires -2147483648 number 2147483647

    环境:ubuntu python3.6 在多进程之间交换(传递)大量数据时报错. 报错: Traceback (most recent call last):   File "/usr/li ...

  10. struct.pack

    准确地讲,Python没有专门处理字节的数据类型.但由于str既是字符串,又可以表示字节,所以,字节数组=str.而在C语言中,我们可以很方便地用struct.union来处理字节,以及字节和int, ...

最新文章

  1. 用 Handler 轻松实现专属Android定时器
  2. HDU 1232 - 畅通工程
  3. 编程理论:多态,继承,和开闭原则
  4. php 查询数据库返回json数据
  5. Sklearn参数详解--决策树
  6. mvc 模式和mtc 模式的区别
  7. Intel 64/x86_64/IA-32/x86处理器 - 通用指令(4) - 比特位设置指令/字节设置指令
  8. Kafka和RocketMQ底层存储:零拷贝技术
  9. 实验五:编写、调试具有多个段的程序
  10. 【渝粤教育】国家开放大学2019年春季 1250文论专题 参考试题
  11. java基础——浅析设计模式之单例模式
  12. JQuery文档信息
  13. 数据分析必备的五大能力
  14. HBuilderX前端html功能拓展应用
  15. YOLOv3: An Incremental Improvement (YOLOv3 论文翻译)
  16. 微信小程序:高德地图搜索周边poi接口实践
  17. 2000个软件开发领域的高频特殊词及精选例句
  18. 微信小程序 java音乐播放器系统python php
  19. $我不是韭菜--基金篇(力哥P1-P6)$
  20. a view of a leaf Variable that requires grad is being used in an in-place operation.

热门文章

  1. Oracle - Profile
  2. Jenkins Maven checkstyle findbugs pmd静态代码检查
  3. 祈福英文学校2021年高考成绩查询,「祈福英语实验学校(中学)」2021届高三港澳台学子送考小记...
  4. JSP中out内置对象的使用
  5. 动态规划(DP)--入门题
  6. python控制机械臂6轴_基于Firmata协议的ROS Moveit六轴机械臂设计
  7. zurmo(七)-部分报错解决(2)
  8. 18.弄懂生成器节约内存一边计算一边生成
  9. PYTHON 顺丰快递分拣小程序
  10. 语音分离--学习笔记(2)