我在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("%u",$b);
var_dump($result);
该代码不起作用,但是用正确的数字替换%b和%u我认为它可以正常工作
答案 0 :(得分:1)
只需使用bitwise OR |
代替逻辑||
:
$x = crc32("abc");
$x2 = crc32("abc2");
$b = $x | $x2; // The integer 2142140882
$result = sprintf('%u',$b); // The string "2142140882"
如果您想获得此结果的二进制字符串,请使用pack
:
$result_binary = pack('N', $b); // Binary format, "\x7f\xae\x79\d2"
答案 1 :(得分:0)
$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);