0

我需要将二进制字符串转换为十六进制字符串。此代码工作正常:

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

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

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

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

4

1 回答 1

0

您的函数将数字隐式转换为 int,达到 32 位限制。BCMath 一次计算一位,并采用字符串中包含的数字,因此您可以乘以数千位数字。

不幸的是,没有用于更改数字基数的本机 BCMath 函数,但是这样做所需的函数在一分钟内完成。查看链接。

于 2013-05-16T22:44:16.407 回答