我需要将二进制字符串转换为十六进制字符串。下面的代码运行良好:
<?
$binary = "1111111111111111111111101000011111111111111111110000001000100100";
$hex = dechex(bindec($binary));
echo $hex;
?>
但是,如果我在二进制字符串中添加一个额外的位(或更多),结果就会返回0。
<?
$binary = "11111111111111111111111101000011111111111111111110000001000100100";
$hex = dechex(bindec($binary));
echo $hex;
?>
我想我可以把二进制字符串分解成块,然后在最后组合十六进制值,但有没有更简单的方法?
您的函数隐式地将数字转换为int,达到32位限制。BCMath每次计算一个比特,并接受字符串中包含的数字,因此您可以将数千个数字相乘。
不幸的是,没有原生BCMath函数用于更改数字基数,但是需要的函数可以在一分钟内完成。查看链接