我不明白,代码
var_dump(decbin(0xFFFFFFFF), 0xFFFFFFFF);
打印
string(32)“11111111111111111111111111111111”float(4294967295)
但是如果我使用按位运算获得值
$shift = 32;
$mask = ~((1 << (32 - $shift)) - 1);
var_dump(decbin($mask), $mask)
给出
string(32)“11111111111111111111111111111111”int(-1)
我怎样才能获得4294967295?
答案 0 :(得分:1)
PHP不支持无符号整数,并且可能有一个带符号的32位整数,对于所有设置的位都是-1。
请参阅http://www.php.net/manual/en/language.types.integer.php
但是,您可以使用printf('%u')