我需要将二进制字符串转换为十六进制字符串。这段代码工作正常:
<?
$binary = "1111111111111111111111101000011111111111111111110000001000100100";
$hex = dechex(bindec($binary));
echo $hex;
?>
但是,如果我向二进制字符串添加一个额外的位(或更多),结果将返回到0。
<?
$binary = "11111111111111111111111101000011111111111111111110000001000100100";
$hex = dechex(bindec($binary));
echo $hex;
?>
我想我可以将二进制字符串拆分成块然后在最后组合十六进制值,但有没有更简单的方法?
答案 0 :(得分:0)
您的函数会将数字明确地转换为int,达到32位限制。 BCMath一次计算一位并且包含字符串中包含的数字,因此您可以将数千位数相乘。
不幸的是,没有用于更改数字基础的本机BCMath函数,但是the needed function这样做是在一分钟内完成的。查看链接。