- 论坛徽章:
- 0
|
python代码
pack/unpack 的摸板字符字符 含义a 一个填充空的字节串 A 一个填充空格的字节串 b 一个位串,在每个字节里位的顺序都是升序 B 一个位串,在每个字节里位的顺序都是降序 c 一个有符号 char(8位整数)值 C 一个无符号 char(8位整数)值;关于 Unicode 参阅 U d 本机格式的双精度浮点数 f 本机格式的单精度浮点数 h 一个十六进制串,低四位在前 H 一个十六进制串,高四位在前 i 一个有符号整数值,本机格式 I 一个无符号整数值,本机格式 l 一个有符号长整形,总是 32 位 L 一个无符号长整形,总是 32 位 n 一个 16位短整形,“网络”字节序(大头在前) N 一个 32 位短整形,“网络”字节序(大头在前) p 一个指向空结尾的字串的指针 P 一个指向定长字串的指针 q 一个有符号四倍(64位整数)值 Q 一个无符号四倍(64位整数)值 s 一个有符号短整数值,总是 16 位 S 一个无符号短整数值,总是 16 位,字节序跟机器芯片有关 u 一个无编码的字串 U 一个 Unicode 字符数字 v 一个“VAX”字节序(小头在前)的 16 位短整数 V 一个“VAX”字节序(小头在前)的 32 位短整数 w 一个 BER 压缩的整数 x 一个空字节(向前忽略一个字节) X 备份一个字节 Z 一个空结束的(和空填充的)字节串 @ 用空字节填充绝对位置
每个字母前面都可以跟着一个数字,表示 count(计数),解释成某种形式的重复计数或者长度,具体情况取决于格式。
character byte order@ native= native> big-endian! network=(big-endian)
下面是一些使用的例子,具体的使用,可以参考这些例子:1. 设置fomat格式,如下: # 取前5个字符,跳过4个字符华,再取3个字符 format = '5s 4x 3s'2. 使用struck.unpack获取子字符串 [color="#FF0102"]import struct print struct.unpack(format, 'Test astring') #('Test', 'ing') 来个简单的例子吧,有一个字符串'He is not very happy',处理一下,把中间的not去掉,然后再输出。 import struct theString = 'He is not very happy' format = '2s 1x 2s 5x 4s 1x 5s' print ' '.join(struct.unpack(format, theString)) 输出结果: He is very happy
3.import structk = '1234'f = struct.unpack('L', k)输出结果:(875770417,) #/0x34333231 ASCII的4321 默认小端法
f = struct.unpack('>L', k) 输出结果:(825373492,) #/0x31323334 ASCII的1234 大端法
f = struct.unpack('BBBB', k) 输出结果:(49,50,51,52) #/ ASCII的1234
k = '12345'f = struct.unpack('LB', k) 输出结果:(875770417,53) #/0x34333231 ASCII的1234 外加十进制53即ASCII的5
k = '12345'f = struct.unpack('5B', k) 输出结果:(49,50,51,52,53) #/ ASCII的12345
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/103763/showart_2113719.html |
|