3

我在 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 我认为它可以工作

4

2 回答 2

1

只需使用按位 OR|而不是逻辑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"
于 2012-07-01T12:28:47.050 回答
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);
于 2012-07-01T12:39:01.540 回答