- 论坛徽章:
- 0
|
本帖最后由 yearn4fd 于 2014-09-02 10:58 编辑
$message='1.00IN123456 SRVM00000001DLGLGNFFFF00000001TXBEG 00FFLOGIN:USER=admin,PSWD=adminjjyy';
#$ms=~s/\s/0/g;
$m=int(length($message)/4);
$n=length($message)%4;
$m++ if($n>0);
my @my_array;
for ($i=0;$i<$m;$i++)
{ $my_array[$i]=substr($message,4*$i,4);}
foreach (@my_array)
{print $_."\n";}
1.00
IN12
3456
SRVM
0000
0001
DLGL
GNFF
FF00
0000
01TX
BEG
00FF
LOGI
N:US
ER=a
dmin
,PSW
D=ad
minj
jyy
现在我不理解的是 几个”头“及”操作信息“加起来,按32位异或。然后取反
难道是:
foreach (@my_array)
{ $_=$_. ' ' x (4-length($_)) if (length($_)<4); } #我自己想当然的对不满4位的分组在其后加上空格
my $ret;
foreach( @my_array) #@my_array中是以上信息“."操作后,按4位一分组获得的数组。
{
print $_."\n";
$ret=$ret^$_; #依次异或}
$ret=~$ret;
print unpack("H32",$ret);
奇怪的是取得的结果服务端通不过。
回复 6# jason680
|
|