例如$a=-101;
通过PHP内置函数可将$a转为16进制echo dechex(-101 & 0xff);-----------输出结果:9b
求大神讲解,php如何将9b,这样的负16进制数,转回10进制的-101
业精于勤,荒于嬉;行成于思,毁于随。
-101 用 decbin 显示有32位。 & 0xff 只取了最低8位,高位都被截去了, 不能还原吧。
就 -101 而言,可以这么做
$signed = unpack("l", pack("l", hexdec("ffffff9b"))); var_dump(reset($signed));
hexdec — 十六进制转换为十进制
说明
number hexdec ( string $hex_string )
返回与 hex_string 参数所表示的十六进制数等值的的十进制数。 hexdec() 将一个十六进制字符串转换为十进制数。 hexdec() 会忽略它遇到的任意非十六进制的字符。
参数
hex_string 要转换的十六进制的字符串
返回值hex_string 十进制的表示
-101 用 decbin 显示有32位。 & 0xff 只取了最低8位,高位都被截去了, 不能还原吧。
就 -101 而言,可以这么做
hexdec — 十六进制转换为十进制
说明
number hexdec ( string $hex_string )
返回与 hex_string 参数所表示的十六进制数等值的的十进制数。 hexdec() 将一个十六进制字符串转换为十进制数。
hexdec() 会忽略它遇到的任意非十六进制的字符。
参数
hex_string
要转换的十六进制的字符串
返回值
hex_string 十进制的表示