Python中使用struct模块打包二进制数据
2016-04-05 15:14
706 查看
运行环境:
demo.py:
控制台输出:
s_data.bin:
b.txt:
Python3.0中必须使用bytes字符串处理二进制文件,所以在字符串前加
pack函数第一个参数是格式化字符串,如上面的
参考:
如果我们要讲bytes字符串转换为unicode字符串,需要
如果要解析一个二进制文件的话:
demo.py:
控制台输出:
Python2和Python3中对于文本文件和二进制文件处理方式不尽相同,所以还要依据开发环境选择不同的处理方法,
参考链接:
https://docs.python.org/2/library/struct.html
http://pythoncentral.io/encoding-and-decoding-strings-in-python-3-x/
http://wwty.iteye.com/blog/401414
python3.4.3
demo.py:
f=open('s_data.bin','wb') import struct s=b'Allen' data=struct.pack('>i5si',7,s,8) print(data) f.write(data) f.close() a,b,c=struct.unpack('>i5si',data) print(a,b,c) b=b.decode('utf-8') print(b) f2=open('b.txt','w') f2.write(b) f2.close()
控制台输出:
b'\x00\x00\x00\x07Allen\x00\x00\x00\x08' 7 b'Allen' 8 Allen [Finished in 0.3s]
s_data.bin:
0000 0007 416c 6c65 6e00 0000 08
b.txt:
Allen
Python3.0中必须使用bytes字符串处理二进制文件,所以在字符串前加
b标识符即可,如:
s=b'Allen'
pack函数第一个参数是格式化字符串,如上面的
>i5si表示存储格式为一个整数,一个5字符的字符串,一个整数,
>表示按照高位在前(big-endian)的形式。
参考:
如果我们要讲bytes字符串转换为unicode字符串,需要
b=b.decode('utf-8')
如果要解析一个二进制文件的话:
demo.py:
import struct f=open('s_data.bin','rb') data=f.read() print(data) a,b,c=struct.unpack('>i5si',data) print(a,b,c)
控制台输出:
b'\x00\x00\x00\x07Allen\x00\x00\x00\x08' 7 b'Allen' 8
Python2和Python3中对于文本文件和二进制文件处理方式不尽相同,所以还要依据开发环境选择不同的处理方法,
参考链接:
https://docs.python.org/2/library/struct.html
http://pythoncentral.io/encoding-and-decoding-strings-in-python-3-x/
http://wwty.iteye.com/blog/401414
相关文章推荐
- python Web
- Python:eval的妙用和滥用
- python压缩与解压
- python pdfkit 中文乱码问题处理
- Python 小模块学习--logging
- Leetcode 13. Roman to Integer(python)
- Python中split函数用法
- python普通继承和super继承
- Leetcode 12. Integer to Roman(python)
- 出生日期转年龄
- python staticmethod & classmethod
- Python教程
- [LeetCode]题解(python):134-Gas Station
- Python:函数式编程与函数
- python+selenium+scrapy搭建简单爬虫
- Python:类与结构体
- uva352 The Seasonal War-python
- python学习过程-集合和for循环
- 利用python下载网页到本地(python3)
- [LeetCode]题解(python):133-Clone Graph