按位和PHP

时间:2015-03-09 11:43:24

标签: php bitwise-operators bitwise-and

我是PHP的新面孔。我读到dechex(255)将在PHP中提供相应的十六进制值ff

我需要-105的十六进制值。我尝试了dechex(-105),结果为ffffff97。但我只想让97做一些事情。

在Java中我知道0xff的一个明智的操作给了我们97 (byte)-105 & (byte)0xff = 0x97的结果。

请在PHP中找到解决方案,就像我在Java中一样。

3 个答案:

答案 0 :(得分:1)

你可以在php中这样做:

var_dump(dechex(-105 & 255))

使其脱离最后一个字节(下面的示例输出)

string(2) "97"

答案 1 :(得分:1)

dechex()为十进制值提供了一个十六进制值,介于0和2 * PHP_INT_MAX + 1(unsigned int)之间。

任何低于0或高于2 * PHP_INT_MAX + 1的东西都会循环。

-105不是0xffffff97,它不是0x97

0xffffff97是4294967191。 和0x97是151。

如果要将负数的十六进制表示形式转换为正数,请使用函数abs()

$abs = abs(-105); // $abs becomes +105
$hex = dechex($abs); // $hex becomes 69

答案 2 :(得分:0)

要么是二进制负值(ffffff97)还是有符号值

// for a signed value
$i = -105;
if($i < 0)
     echo '-'.dechex(abs($i));
else echo dechex($i);

如果你想删除前面的&#34; f&#34;

echo preg_replace('#^f+#', '', dechex($i));