你应该说清楚你想做的事情是什么啊,就是你正确的逻辑是什么。而且你的代码本身也是有syntax error的。我也没看出来你想做什么。
感谢回答,我的目的就是对md5加密之后的字符串进行每8位做一次异或得到一个长整数
你说结果不正确,那么正确的值是什么呢?
你只给了代码片段,无法测试
感谢回答,我的目的就是对md5加密之后的字符串进行每8位做一次异或得到一个长整数
你说结果不正确,那么正确的值是什么呢?
你只给了代码片段,无法测试
感谢回答,我的目的就是对md5加密之后的字符串进行每8位做一次异或得到一个长整数
php代码:我第一次发帖的代码,的确有问题,我再重新写一遍
$string = "!&22E2&!'&5aSJ^#$&6 $md5 = md5("0E2C83D839C026A5E0530100007FEB90".md5($string,true),true);
$data = array();
$data[0]="0";
for($i = 0; $i $data[$i % 4 +1] ^=$md5[$i];
}
$val = 0;
$val = $data[1] & 0xff;
$val $val |= $data[ 2] & 0xff;
$val $val |= $data[3] & 0xff;
$val $val |= $data[4] & 0xff;
echo $val;
是知道啊?能指出我哪里算错了吗?悬赏100人民币
你说 php 运行结果是 16327680
但你贴出的代码得到的是 327680
对的,是我写错了,是327680,我对PHP不熟悉,JAVA的值是正确的,我再考虑是不是PHP对位的运算和JAVA存在出入,因为JAVA是unicode编码,造成和php位运算出错?
这样写
$string = "!&22E2&!'&5aSJ^#$&6<&!&()pR49}I&dh111111";$md5 = md5("0E2C83D839C026A5E0530100007FEB90".md5($string,true),true);$data = array(0,0,0,0);for($i = 0; $i < strlen($md5); $i++){ $data[$i % 4 ] ^= ord($md5[$i]);}$val = 0; foreach($data as $v) $val = $val * 256 + $v;printf('%u', $val); //2676031167
这样写
$string = "!&22E2&!'&5aSJ^#$&6<&!&()pR49}I&dh111111";$md5 = md5("0E2C83D839C026A5E0530100007FEB90".md5($string,true),true);$data = array(0,0,0,0);for($i = 0; $i < strlen($md5); $i++){ $data[$i % 4 ] ^= ord($md5[$i]);}$val = 0; foreach($data as $v) $val = $val * 256 + $v;printf('%u', $val); //2676031167
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号