需要用php处理一串16进制的字符串做异或运算,赋值到数组后计算得到的是空。如果直接复制变量计算的后就能得到正常结果,求解
<?php
$xoc = 12345678;
$a = str_split($xoc, 2);
$i =$a[0] ;
$b = $a[1];
$c = $i ^ $b;
echo $c;
?>
返回空
如果直接用
<?php
$a = 12;
$b = 34
echo $c = $a ^ $b;
?>
这样就可以得到正确的结果。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
str_split后$i成字符串了
$c = (int)$i ^ (int)$b;错误原因 没有做类型转换
字符串'12'和'34'异或是按位进行的,就是'1'^'3'、'2'^'4'
'1'^'3'=49(ASCII码)^51(ASCII码)=0011 0001^0011 0011=0000 0010=2(ASCII码)=STX (start of text)
'2'^'4'=50(ASCII码)^52(ASCII码)=0011 0010^0011 0100=0000 0110=6(ASCII码)=Acknowledge (确认)
ASCII码0~31对应的是控制字符,属于不可显示字符,所以显示为空。