Chinaunix首页 | 论坛 | 博客
  • 博客访问: 61823
  • 博文数量: 18
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 210
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-26 16:04
文章分类

全部博文(18)

文章存档

2011年(1)

2009年(3)

2008年(14)

我的朋友

分类: Python/Ruby

2008-11-12 17:16:37

首先声明,我这个方法也只是“曲线救国”,好了,先介绍下我要unpack的结构:

typedef struct _st_DataInfo{

char ReportTime[20];

char GUID[41];

char UserName[33];

char UserIp[50];

int  ItemNumber;

DATAITEM *data;

} DATAINFO;

Typedef struct _st_DataItem{

char Infohash[41];     

int  TotalPeers;

int  UploadPeers;

int  DownloadPeers;

int  StandbyPeers; 

long long Upload; 

long long Download;

int  UploadSpeed;

int  DownloadSpeed;

} DATAITEM;


里面的itemnumber是后面DATAITEM结构的个数,而最后的那个DATAITEM *data真是困扰我多时啊,查了半天,也没琢磨出结构指针用哪种format解析,python2.5手册解析格式如下:

Format

C Type

Python

Notes

x

pad byte

no value


c

char

string of length 1


b

signed char

integer


B

unsigned char

integer


h

short

integer


H

unsigned short

integer


i

int

integer


I

unsigned int

long


l

long

integer


L

unsigned long

long


q

long long

long

(1)

Q

unsigned long long

long

(1)

f

float

float


d

double

float


s

char[]

string


p

char[]

string


P

void *

integer

后来转头一想,算了,把指针长度大小的数据忽略掉吧,四个字节,self.buf = self.buf[:184]+self.buf[188:],后来就成功了

注:谁知道怎么unpack这种的,一定要告诉我啊,多谢了:)


阅读(2683) | 评论(0) | 转发(0) |
0

上一篇:菲舍尔随机象棋

下一篇:python中时间转换

给主人留下些什么吧!~~