pythonstruct.pack用法(转)

更新时间:2023-07-19 04:23:17 阅读: 评论:0

pythonstruct.pack ⽤法(转)
格式符”i”表⽰转换为int,’ii’表⽰有两个int变量。
进⾏转换后的结果长度为8个字节(int类型占⽤4个字节,两个int为8个字节) 可以看到输出的结果是乱码,因为结果是⼆进制数据,所以显⽰为乱码。
关于收获的作文可以使⽤python的内置函数repr来获取可识别的字符串,其中⼗六进制的0x00000014, 0x00001009分别表⽰20和400。2、 struct.unpack
struct.unpack做的⼯作刚好与struct.pack相反,⽤于将字节流转换成python数据类型。它的函数原型为:struct.unpack(fmt,string),该函数返回⼀个元组。 下⾯是⼀个简单的例⼦:1、 struct.pack
平凡的
struct.pack⽤于将Python的值根据格式符,转换为字符串(因为Python中没有字节(Byte)类型,可以把这⾥的字符串理解为字节流,或字节数组)。其函数原型为:struct.pack(fmt, v1, v2, …),参数fmt是格式字符串,关于格式字符串的相关信息在下⾯有所介绍。v1, v2,…表⽰要转换的python值。下⾯的例⼦将两个整数转换为字符串(字节流):#!/usr/bin/env python  #encoding: utf8  import  sys  reload(sys)
sys.tdefaultencoding("utf-8")  import  struct  a = 20  b = 400
str = struct.pack("ii", a, b)
print  'length: ', len(str)          # length:  8  print  str                          # 乱码:
print  repr(str)                    # '\x14\x00\x00\x00\x90\x01\x00\x00'
123456789101112131415
[python] view plain copy #!/usr/bin/env python  #encoding: utf8  import  sys  reload(sys)
sys.tdefaultencoding("utf-8")  import  struct  a = 20  b = 400  # pack
str = struct.pack("ii", a, b)
print  'length: ', len(str)          # length:  8  print  str                          # 乱码:
print  repr(str)                    # '\x14\x00\x00\x00\x90\x01\x00\x00'  # unpack
str2 = struct.unpack("ii", str)
超长待机智能print  'length: ', len(str2)          # length:  2  print  str2                          # (20, 400)  print  repr(str2)                    # (20, 400)
123456789101112131415161718192021222324
3、 struct.calcsize
降糖小妙招struct.calcsize⽤于计算格式字符串所对应的结果的长度,如:struct.calcsize(‘ii’),返回8。因为两个int类型所占⽤的长度是8个字节。4、 struct.pack_into、 struct.unpack_from
这两个函数在Python⼿册中有所介绍,但没有给出如何使⽤的例⼦。其实它们在实际应⽤中⽤的并不多。Google了很久,才找到⼀个例⼦,贴出来共享⼀下:struct 类型表
Format
C Type Python type Standard size
Notes
带金的字
x pad byte no value  c char string of length 1
1 b signed char integer 1(3)B unsigned char
integer 1(3)_Bool bool 1(1)h short integer 2(3)H unsigned short
integer 2(3)i
int
integer音响设备
4
(3)
[python] view plain copy import  struct
print  "len: ", struct.calcsize('i')      # len:  4  print  "len: ", struct.calcsize('ii')      # len:  8  print  "len: ", struct.calcsize('f')      # len:  4  print  "len: ", struct.calcsize('ff')      # len:  8  print  "len: ", struct.calcsize('s')      # len:  1  print  "len: ", struct.calcsize('ss')      # len:  2  print  "len: ", struct.calcsize('d')      # len:  8  print  "len: ", struct.calcsize('dd')      # len:  16
12345678910
[python] view plain copy #!/usr/bin/env python  #encoding: utf8  import  sys  reload(sys)
sys.tdefaultencoding("utf-8")  import  struct
棋鬼
from  ctypes import  create_string_buffer  buf = create_string_buffer(12)
闭塞眼睛捉麻雀
print  repr(buf.raw)    # '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'  struct.pack_into("iii", buf, 0, 1, 2, -1)
print  repr(buf.raw)    # '\x01\x00\x00\x00\x02\x00\x00\x00\xff\xff\xff\xff'  print  struct.unpack_from("iii", buf, 0)    # (1, 2, -1)  具体内容请参考Python ⼿册 struct 模块
Python ⼿册 struct 模块:docs.python/library/struct.html #module-struct
1234567891011121314151617181920
I unsigned int integer4(3) Format    C Type Python type Standard size Notes l long integer4(3)
L unsigned long integer4(3)
q long long integer8(2), (3)
Q unsigned long long integer8(2), (3)
f float float4(4)
d doubl
e float8(4)
s char[]string1
p char[]string
P void *integer(5), (3)

本文发布于:2023-07-19 04:23:17,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/1104361.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:字符串   字节   结果   函数
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图