python3 pickle & struct

import pickle

pickle是用来把python原生的对象存在硬盘里

>>> print(D)
{'cisco': 1, 'python': 2, 'ericsson': 3}
>>> import pickle
>>> F=open('pickle_test.pkl', 'wb')
>>> pickle.dump(D,F)
>>> F.close()
>>> F=open('pickle_test.pkl','rb')
>>> E=pickle.load(F)
>>> E
{'cisco': 1, 'python': 2, 'ericsson': 3}
>>> 

  用pickle.dump()把字典D这个python对象存储进pickle_test.pkl,该pkl文件是存在硬盘上的

后面用pickle.load()再把硬盘上的文件打开

 pickle这种方式,只能用来存储python的对象,C语言的对象看不了,可以用XML或者JSON来存储数据,其他语言也是可以看的

####################################################

struck可以用来构造tcp头部

参考博客:

https://www.cnblogs.com/gala/archive/2011/09/22/2184801.html

>: 网络字节序:左侧是高位,右侧是低位

<: 主机字节序:左侧是低位,右侧是高位

i: 整数,占4个字节,目的是把7放在4个字节里,即序列号要是7 - i对应的是7

s: 字符,4s即四个字母,一个字母占一个字节 - 对应的是b'spam'

h: 整数,两个字节,对应的是8,网络编程里可能对应的是端口号

b'spam': 二进制的spam

写入了一共10个字节:4+4+2

>>> F=open('data.bin','wb')
>>> import struct
>>> data=struct.pack('>i4sh',7,b'spam',8)
>>> data
b'\x00\x00\x00\x07spam\x00\x08'
>>> F.write(data)
10
>>> F.close()
>>> F=open('data.bin','rb')
>>> data=F.read()
>>> data
b'\x00\x00\x00\x07spam\x00\x08'
>>> values = struct.unpack('>i4sh',data)
>>> values
(7, b'spam', 8)
>>> 

  这种方法比较原始,比较麻烦,有其他更高级的方法来构造TCP数据包

 

转载于:https://www.cnblogs.com/vigossr/p/11174366.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值