如何在32位php上获得64位数的按位结果

时间:2012-07-01 12:23:06

标签: 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("%u",$b);

var_dump($result);

该代码不起作用,但是用正确的数字替换%b和%u我认为它可以正常工作

2 个答案:

答案 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);