如何在32位php上获得64位数字的逐位结果
我在php中有两个32位无符号整数(crc32()的结果),我想在32位版本的php中获得这些数字的逐位结果 我已经尝试了很多实验,但很明显,php如何处理这些数字和二进制数据,我还缺少一些东西 更新: 我在找这样的东西:如何在32位php上获得64位数字的逐位结果,php,Php,我在php中有两个32位无符号整数(crc32()的结果),我想在32位版本的php中获得这些数字的逐位结果 我已经尝试了很多实验,但很明显,php如何处理这些数字和二进制数据,我还缺少一些东西 更新: 我在找这样的东西: $x = crc32("abc"); $bin = sprintf("%b", $x); $x2 = crc32("abc2"); $bin2 = sprintf("%b", $x2); $b = $bin | $bin2; $result = sprintf(
$x = crc32("abc");
$bin = sprintf("%b", $x);
$x2 = crc32("abc2");
$bin2 = sprintf("%b", $x2);
$b = $bin | $bin2;
$result = sprintf("%u",$b);
var_dump($result);
该代码不起作用,但通过用正确的数字替换%b和%u,我认为它可以起作用只需使用而不是逻辑代码,|
:
$x = crc32("abc");
$x2 = crc32("abc2");
$b = $x | $x2; // The integer 2142140882
$result = sprintf('%u',$b); // The string "2142140882"
如果要获取此结果的二进制字符串,请使用:
$x=crc32(“abc”);
printf(“%x”,$x);echo“(sedecimal)
\n”;
printf(“%u”,x美元);echo“(整数)
\n”;
printf(“%b”,x美元);echo“(二进制)
\n”;
$bin=sprintf(“%b”,$x);
那么64位是从哪里来的呢?例如4257153023 | 3825205239@alnitak-php整数是有符号的,所以它们只能接受按位的31位有符号整数,或者是|
运算符,我相信不是?谢谢,但我希望得到两个crc结果的按位结果,然后将其返回到正确的无符号值字符串。你是说我可以得到这个二进制结果,然后按位计算,它会工作吗?这与我的问题有什么关系?@user1122069你以前的问题版本要求得到按位结果,我认为这意味着两个数字的按位表示的串联。您的编辑澄清了您指的是按位OR运算的结果,这是完全不同的事情。更新了答案。谢谢。我很确定我以前也用过这种方法,但它确实有效。
$result_binary = pack('N', $b); // Binary format, "\x7f\xae\x79\d2"
$x = crc32("abc");
printf("%x", $x); echo "(sedecimal)<br>\n";
printf("%u", $x); echo "(integer)<br>\n";
printf("%b", $x); echo "(binary)<br>\n";
$bin = sprintf("%b", $x);