首页 > 编程语言 > AAuto > each迭代遍历javaqq网络数据
2012
11-24

each迭代遍历javaqq网络数据

48 25 90 E7 //1210421479
02 07 00 32 00 00 //属性
00 08 //昵称长度
72 EC 97 38 59 29 4E 0B //独霸天下
00 04 //地区长度
6C 5F 82 CF //江苏
76 75 FF 24 //qq号码
00 00 00 3A 00 00 //属性
00 06
75 32 59 29 4E 0B //甲天下
00 04
6C 5F 82 CF
1A DD B0 02 00 27 00 2A 00 00 00 08 51 AC
65 E5 96 33 51 49 00 04 6C 5F 82 CF 6F A3 1B 8C
02 16 00 35 00 00 00 06 7F E0 67 97 4F A0 00 04
6C 5F 82 CF 4A 21 69 2B 02 10 00 40 00 00 00 06
4E 1C 53 17 86 4E 00 04 6C 5F 82 CF 23 8E 7F 28
00 E4 00 2F 00 00 00 06 65 E0 62 40 8C 13 00 04
6C 5F 82 CF 11 6B A6 89 00 9F 00 32 00 00 00 04
68 EE 67 97 00 04 6C 5F 82 CF 2A A5 DE E0 00 FC
00 2A 00 00 00 06 9F 99 4E 2D 9F 99 00 04 6C 5F
82 CF 83 C8 84 25 02 1C 00 37 00 00 00 04 52 18
5D E5 00 04 6C 5F 82 CF 0E BB 1A A0 00 00 00 3C
00 00 00 06 7A 0B 5B 9D 8D 1D 00 04 6C 5F 82 CF
8D 53 70 DF 02 25 00 34 00 00 00 0C 53 56 96 E8
82 B1 77 F3 76 84 4E BA 00 04 6C 5F 82 CF 13 CC
11 FC 00 2A 00 3A 00 00 00 04 80 01 00 4B 00 04
6C 5F 82 CF 2D C1 A8 AF 00 BA 00 37 00 00 00 04
6D 77 6D 9B 00 04 6C 5F 82 CF 73 04 14 A1 02 1C
00 34 00 00 00 06 80 01 53 57 4E AC 00 04 6C 5F
82 CF 13 C4 AA 0A 00 69 00 36 00 00 00 04 71 36
67 97 00 04 6C 5F 82 CF 14 A8 B4 CF 01 1D 00 2B
00 00 00 0C 6C 99 4E 09 5C 0F 67 68 53 6B 6C 11
00 04 6C 5F 82 CF 22 16 86 17 00 06 00 2A 00 00
00 04 96 3F 65 87 00 04 6C 5F 82 CF 75 1F 32 06
02 6A 00 35 00 00 00 04 73 CD 60 DC 00 04 6C 5F
82 CF 3D 17 1D 8B 00 00 00 40 00 00 00 06 00 6A
00 69 00 61 00 04 6C 5F 82 CF

javaqq数据如上,是一段带有结构的二进制数据,其中昵称长度和地区长度为可变数据。循环字符串截取要写很长的代码。但是用each函数可以把变量封闭,简化编程。

str = ‘\x1A\xDD\xB0\x02\x00\x27\x00\x2A\x00\x00\x00\x08\x51\xAC\x65\xE5\x96\x33\x51\x49\x00\x04\x6C\x5F\x82\xCF’
++
‘\x6F\xA3\x1B\x8C\x02\x16\x00\x35\x00\x00\x00\x06\x7F\xE0\x67\x97\x4F\xA0\x00\x04\x6C\x5F\x82\xCF’
++ 
‘\x23\x8E\x7F\x28\x00\xE4\x00\x2F\x00\x00\x00\x06\x65\xE0\x62\x40\x8C\x13\x00\x04\x6C\x5F\x82\xCF\x11’

import fsys.codepage
each = 
function(str){
var offset = 0
return function(){
if(offset>#str-4){
return null,null;
}
var nickset = offset + 12
var nicklen = ..string.unpack( ..string.sub(str,nickset,nickset) )
var nickname = ..string.fromUnicode( ..fsys.codepage.reverseEndian(..string.sub( str,nickset+1,nickset+nicklen )) )
var addrset = nickset + nicklen + 2
var addrlen = ..string.unpack( ..string.sub(str,addrset,addrset) )
var addrname = ..string.fromUnicode( ..fsys.codepage.reverseEndian(..string.sub( str,addrset+1,addrset+addrlen )) )
offset = addrset+addrlen
return nickname,addrname;
}
}

io.open();
for( name,address in each(str) ){
io.print( name,address )
}

 

最后编辑:
作者:NINE
这个作者貌似有点懒,什么都没有留下。

留下一个回复

你的email不会被公开。