转自:http://muxu303.blog.163.com/blog/static/51280192011224101232405/
python作为脚本语言中最给力的一种,集成了编译语言的功能性和脚本语言的灵活性,作为一种高级的解释性脚本语言,同时还具有程序语言的各种优点如:面向对象,可扩展,可移植,易学易用,强大的内存管理,有点少叙,本文介绍其对二进制数据的操作模块struct,无论是网络应用,还是文件存储,均可派上用场..
先来感性的认识一段代码:如下(输出为斜体)
--------------------------------------------------------------------------------
>>> import struct 【引入struct包】
>>> byte_buf = struct.pack("i5sc6s", 9527,"hello"," ","world!!") 【打包数据到byte_buf中,参数“i5sc6s”表示一个int型,长度为5的char组...】
>>> v1,v2,v3,v4 = struct.unpack("i5sc6s",byte_buf) 【解包到四个值】
>>> print v1,v2,v3,v4 【打印输出】
9527 hello world! 【最后一个感叹号没打印出来,因为格式化参数“i5sc6s“的6截断第二个感叹号】
--------------------------------------------------------------------------------
>>> byte_buf = struct.pack("i", 134) 【只对一个值打包】
>>> type(struct.unpack("i", byte_buf)) 【unpack返回的是tuple】
<type 'tuple'>
>>> struct.unpack("i", byte_buf)[0]
134
通过如上的演示,相信大家对该模块的用法已经掌握了,如下两表为该模块对应的,格式化时使用的数据类型,和一些特殊规则
Format
C Type
Python
字节数
x |
pad byte |
no value |
1 |
c |
char |
string of length 1 |
1 |
b |
signed char |
integer |
1 |
B |
unsigned char |
integer |
1 |
? |
_Bool |
bool |
1 |
h |
short |
integer |
2 |
H |
unsigned short |
integer |
2 |
i |
int |
integer |
4 |
I |
unsigned int |
integer or long |
4 |
l |
long |
integer |
4 |
L |
unsigned long |
long |
4 |
q |
long long |
long |
8 |
Q |
unsigned long long |
long |
8 |
f |
float |
float |
4 |
d |
double |
float |
8 |
s |
char[] |
string |
1 |
p |
char[] |
string |
1 |
P |
void * |
long |
4 |
考虑到c或c++编译器使用了字节对齐,通常是以4个字节为单位的32位系统,故而还提供了如下的选项用来表示不同的字节对其方式,如使用'@6si'表示4字节对齐,先6个char,再一个int型,共使用12个字节
Character
Byte order
Size and alignment
@ |
native |
native 4个字节对齐 |
= |
native |
standard 原字节数 |
< |
little-endian |
standard 原字节数 |
> |
big-endian |
standard 原字节数 |
! |
network (= big-endian) |
standard 原字节数 |
分享到:
相关推荐
Smartyparse: python面向对象的动态二进制打包和解包-SmartyParse 是面向 3.3 以上 Python 的二进制 打包/解包(又名建筑/解析)格式库. 如果需要定义二进制格式 (.tar, .bmp, 字节式网络数据包..) 或是开发专用格式...
binpacker - 一个二进制打包和解包器帮助用户构建定制的二进制流
打包解包
用于img格式镜像文件解包和打包的好工具!
rom 一键解包 打包 做第三方rom工具 完美版CM 资源较大。功能较多。 工具支持; 解包打包boot和recovery 解包打包ODM格式任意 解包打包system格式 解包打包bat后缀格式 解包打包br后缀格式 解包打包odm。img 解包打包...
2022rom解包打包做第三方rom工具 支持super格式解包打包 提示:请下载解压后改名英文短目录后在操作 简单说明 支持目前机型的解包打包 支持img格式解包打包 支持super格式的解包打包 支持任意BR后缀解包打包 支持...
安卓机型一键解包打包工具 做rom的工具 解包 打包系统 解包rec 解包boot 打包rec 打包boot 解包系统 解包其他分区img等 对应到解包打包选项较多 资源自测较好 建议win7以上机型使用 资源较大。建议留有空间解压
把一个指定文件夹下的文件打成一个自定义格式的压缩包; 在指定一个具体位置解包;心血奉献
晶晨固件解包打包工具
乐视电视bin固件解包打包,精简工具
ubuntu 解包打包 img
晶晨固件解包和打包工具可以编辑系统文件以及内核文件的修改修过的固件不在受到厂家的限制此工具通俗易操作
两个boot.img 解包和打包工具,Linux平台使用,可以解包boot.img ramdisk.img recovery.img,修改资源后重新打包烧写,达到修改手机固件的目的,通常用来root,开adb,加自启任务等
解包打包内核工具解包打包内核工具解包打包内核工具解包打包内核工具解包打包内核工具
晶晨系盒子线刷固件解包打包工具 使用说明: 卡刷包 .zip后缀 放在工具目录下面即可 线刷包 .img后缀 放在工具目录里面的 in 文件夹里面
固件解包打包工具_2014固件解包打包固件解包打包工具_20140420_v5.0.exe工具_20140420_v5.0.exe0420_v5.0.exe固件解包打包工具_20140420_v5.0.exe
mstar系列ROM解包打包工具,用于乐视超级电视系统ROM的打包解包,定制ROM必备。
安卓机型ROM解包打包工具MIK解压版 说明: 是一个允许用户使用 Windows 重新打包 Android 分区的工具。该工具支持 更多功能,您可以在下面查看。 特征: 拆包和打包分区:System、Vendor、Product、ODM、SOCKO、...
晶晨方案固件解包打包定制工具CustomizationTool_setup_v2.0.8
1.将要解包的boot.img拷贝过来,执行脚本source unpack.sh,解包boot.img; 2.进入到文件夹ramdisk,编辑需要的文件,比如init.rc, init.amlogic.board.rc,替换init, 编辑fstab等; 还可以替换内核code,即将out/...