PHP中二进制到十六进制转换的限制


Limit of Binary to Hex conversion in PHP

我需要将二进制字符串转换为十六进制字符串。下面的代码运行良好:

<?
$binary = "1111111111111111111111101000011111111111111111110000001000100100";
$hex = dechex(bindec($binary));
echo $hex;
?>

但是,如果我在二进制字符串中添加一个额外的位(或更多),结果就会返回0。

<?
$binary = "11111111111111111111111101000011111111111111111110000001000100100";
$hex = dechex(bindec($binary));
echo $hex;
?>

我想我可以把二进制字符串分解成块,然后在最后组合十六进制值,但有没有更简单的方法?

您的函数隐式地将数字转换为int,达到32位限制。BCMath每次计算一个比特,并接受字符串中包含的数字,因此您可以将数千个数字相乘。

不幸的是,没有原生BCMath函数用于更改数字基数,但是需要的函数可以在一分钟内完成。查看链接