Chinaunix

标题: 请教一段二进制的解码方法 [打印本页]

作者: dancebear    时间: 2009-06-09 15:39
标题: 请教一段二进制的解码方法
现有一段二进制文件,是用php的pack函数打包而成,方法如下:

  1. pack('V1V1V1V1V1V1H*',$next,$prev,$data,$size,$ru_right,$lru_left,$key)
复制代码

现在使用python来读取的话前面的数字读取都没有问题,但是最后的H*这段读取有些问题,我用下面的方法来读的。

  1. from sturct import unpack
  2. print unpack('>LLLLLL16p',b)
复制代码

作者: dancebear    时间: 2009-06-09 16:08
自己解决了。
办法如下:
echo base64encode(pack('H*','cfcd208495d565ef66e7dff9f98764da'));

输出如下:
z80ghJXVZe9m59/5+Ydk2g==
在python中使用如下代码可以将其正确的解析出来

from struct import pack,unpack
from base64 import b64decode
def dechex(n):
     """return the hexadecimal string representation of integer n"""
     return "%x" % n

a=b64decode('z80ghJXVZe9m59/5+Ydk2g==')
b=unpack('16B',a)
print b
d=[]
for i in b:
     d.append(dechex(i))
print d


['cf', 'cd', '20', '84', '95', 'd5', '65', 'ef', '66', 'e7', 'df', 'f9', 'f9', '87', '64', 'da']
作者: thsniperwolf    时间: 2009-06-10 16:02
学习了




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2