我正在尝试将十六进制值“ 0000”转换为BIN值。 在数学上: (0000)16 =(0000 0000 0000 0000)2
但是当我尝试使用
$hex = '0000';
echo base_convert ($hex, 16, 2);
我得到了0000 0000 0000 0000的0插入。
看起来一样,但事实并非如此。 在我的场景中,这16位代表另存为十六进制值的数字输出的状态。
要使其按预期工作,我需要更改什么?
答案 0 :(得分:2)
您将得到0,因为base_convert
不会在结果字符串中输出超出代表数字所需的位数。而是使用hexdec
将字符串转换为十进制数字,然后使用%b
转换规范,使用sprintf
将输出转换为16位二进制数字:
$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
答案 1 :(得分:0)
根据我的经验,PHP和Js有相同的问题。我曾经检查并在需要的地方添加n 0。