对 resPickle 的改进
resPickle容易出现编码问题,所以进行了修正
1
from System import Convert
2
from System.IO import MemoryStream
3
from System.Runtime.Serialization.Formatters.Binary import BinaryFormatter
4
import copy_reg
5![](/Images/OutliningIndicators/None.gif)
6
_formatter = BinaryFormatter()
7![](/Images/OutliningIndicators/None.gif)
8
def _unpickler(string):
9
bytes = Convert.FromBase64String(string)
10
stream = MemoryStream(bytes)
11
return _formatter.Deserialize(stream)
12![](/Images/OutliningIndicators/None.gif)
13
def _pickler(obj):
14
stream = MemoryStream()
15
_formatter.Serialize(stream, obj)
16
bytes = stream.ToArray()
17
string = Convert.ToBase64String(bytes)
18
return _unpickler, (string,)
19![](/Images/OutliningIndicators/None.gif)
20
def Register(type):
21
copy_reg.pickle(type, _pickler, _unpickler)
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/None.gif)
3
![](/Images/OutliningIndicators/None.gif)
4
![](/Images/OutliningIndicators/None.gif)
5
![](/Images/OutliningIndicators/None.gif)
6
![](/Images/OutliningIndicators/None.gif)
7
![](/Images/OutliningIndicators/None.gif)
8
![](/Images/OutliningIndicators/None.gif)
9
![](/Images/OutliningIndicators/None.gif)
10
![](/Images/OutliningIndicators/None.gif)
11
![](/Images/OutliningIndicators/None.gif)
12
![](/Images/OutliningIndicators/None.gif)
13
![](/Images/OutliningIndicators/None.gif)
14
![](/Images/OutliningIndicators/None.gif)
15
![](/Images/OutliningIndicators/None.gif)
16
![](/Images/OutliningIndicators/None.gif)
17
![](/Images/OutliningIndicators/None.gif)
18
![](/Images/OutliningIndicators/None.gif)
19
![](/Images/OutliningIndicators/None.gif)
20
![](/Images/OutliningIndicators/None.gif)
21
![](/Images/OutliningIndicators/None.gif)
posted on 2007-11-08 10:34 Boringlamb 阅读(221) 评论(0) 编辑 收藏 举报