我是PHP的新面孔。我读到dechex(255)
将在PHP中提供相应的十六进制值ff
。
我需要-105
的十六进制值。我尝试了dechex(-105)
,结果为ffffff97
。但我只想让97
做一些事情。
在Java中我知道0xff
的一个明智的操作给了我们97
(byte)-105 & (byte)0xff = 0x97
的结果。
请在PHP中找到解决方案,就像我在Java中一样。
答案 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));