我试图将HEX值“0000”转换为BIN值 . 在数学中:(0000)16 =(0000 0000 0000 0000)2
但是当我试图使用时
$hex = '0000'; echo base_convert ($hex, 16, 2);
我得到0 0000 0000 0000 0000 .
它看起来一样但不是 . 在我的场景中,16位表示保存为HEX值的数字输出的状态 .
我需要更改什么才能使其按预期工作?
您将获得0,因为 base_convert 不会在结果字符串中输出比表示数字所需的更多数字 . 相反,使用hexdec将字符串转换为十进制数,然后使用sprintf使用 %b 转换规范将输出作为16位二进制数字:
base_convert
%b
$hex = '0000'; $bin = sprintf("%016b", hexdec($hex)); echo $bin;
输出:
0000000000000000
如果你真的想要每个4位块之间的空格,你可以使用str_split和implode,例如
echo implode(' ', str_split($bin, 4)) . "\n";
0000 0000 0000 0000
Demo on 3v4l.org
PHP和Js在我的经验中也有同样的问题 . 我曾经检查并在需要的地方添加n 0 .
2 回答
您将获得0,因为
base_convert
不会在结果字符串中输出比表示数字所需的更多数字 . 相反,使用hexdec将字符串转换为十进制数,然后使用sprintf使用%b
转换规范将输出作为16位二进制数字:输出:
如果你真的想要每个4位块之间的空格,你可以使用str_split和implode,例如
输出:
Demo on 3v4l.org
PHP和Js在我的经验中也有同样的问题 . 我曾经检查并在需要的地方添加n 0 .