search

Home  >  Q&A  >  body text

PHP 16进制负数转10进制,如何实现

例如
$a=-101;

通过PHP内置函数可将$a转为16进制
echo dechex(-101 & 0xff);
-----------
输出结果:9b

求大神讲解,php如何将9b,这样的负16进制数,转回10进制的-101

迷茫迷茫2821 days ago1040

reply all(2)I'll reply

  • 迷茫

    迷茫2017-04-10 16:13:59

    -101 用 decbin 显示有32位。 & 0xff 只取了最低8位,高位都被截去了, 不能还原吧。

    就 -101 而言,可以这么做

    $signed = unpack("l", pack("l", hexdec("ffffff9b")));
    var_dump(reset($signed));

    reply
    0
  • 巴扎黑

    巴扎黑2017-04-10 16:13:59

    hexdec — 十六进制转换为十进制

    说明

    number hexdec ( string $hex_string )

    返回与 hex_string 参数所表示的十六进制数等值的的十进制数。 hexdec() 将一个十六进制字符串转换为十进制数。
    hexdec() 会忽略它遇到的任意非十六进制的字符。

    参数

    hex_string
    要转换的十六进制的字符串

    返回值
    hex_string 十进制的表示

    reply
    0
  • Cancelreply