PHP将十进制转换为十六进制

用户名

我正在使用内置的OpenSSL库从数字证书中提取序列号,但是,我无法将此数字精确地转换为十六进制。

提取的数字最初为十进制,但我需要为十六进制。

我要转换的数字是:11448322246106101871871321325645646083004

这是我尝试过的:

  • dechex() 不起作用,它返回: 7fffffffffffffff

我能得到的最接近的是php.net页面上的此函数,但它不会部分转换整数。

function dec2hex($dec) {
  $hex = ($dec == 0 ? '0' : '');

  while ($dec > 0) {
    $hex = dechex($dec - floor($dec / 16) * 16) . $hex;
    $dec = floor($dec / 16);
  }

  return $hex;
}
echo dec2hex('114483222461061018757513232564608398004');
//Result: 5620aaa80d50fc000000000000000000

这是我所期望的:

  • 十进制数:114483222461061018757513232564608398004
  • 预期的十六进制:5620AAA80D50FD70496983E2A39972B4

我可以在这里看到更正转换:https : //www.mathsisfun.com/binary-decimal-hexadecimal-converter.html

我需要一个PHP解决方案。

罗比·阿夫里尔(Robbie Averill)

问题是在于The largest number that can be converted is ... 4294967295-因此,为什么它不为你工作。

假设您已经在服务器上安装了bcmath,那么在快速测试期间,此答案对我有用,并且您可以将数字作为字符串来获取如果不能,即它作为数字变量开始使用,那么您将立即达到PHP的float limit

// Credit: joost at bingopaleis dot com
// Input: A decimal number as a String.
// Output: The equivalent hexadecimal number as a String.
function dec2hex($number)
{
    $hexvalues = array('0','1','2','3','4','5','6','7',
               '8','9','A','B','C','D','E','F');
    $hexval = '';
     while($number != '0')
     {
        $hexval = $hexvalues[bcmod($number,'16')].$hexval;
        $number = bcdiv($number,'16',0);
    }
    return $hexval;
}

例子:

$number = '114483222461061018757513232564608398004'; // Important: already a string!
var_dump(dec2hex($number)); // string(32) "5620AAA80D50FD70496983E2A39972B4"

确保将字符串而不是数字变量传递给该函数。在问题中提供的示例中,看起来您可以最初以字符串形式获取数字,因此如果您安装了bc,它应该可以工作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将十进制转换为十六进制值

来自分类Dev

将十六进制转换为十进制

来自分类Dev

使用python将十六进制十进制数字转换为十进制

来自分类Dev

PHP将大十进制数转换为十六进制

来自分类Dev

PHP将十六进制转换为十进制不起作用

来自分类Dev

在cmake中从十进制转换为十六进制

来自分类Dev

ShellScript十六进制转换为十进制

来自分类Dev

在 Swift 中将十六进制转换为十进制

来自分类Dev

十进制数转换为十六进制数

来自分类Dev

将字符串转换为十六进制,十进制和八进制

来自分类Dev

将十六进制十进制IP地址转换为c#中的点表示法十进制

来自分类Dev

如何将负十六进制转换为十进制

来自分类Dev

如何将负十进制转换为十六进制?

来自分类Dev

使用awk将第一列从十六进制转换为十进制

来自分类Dev

如何使用大脑将十进制转换为十六进制?

来自分类Dev

从类似csv的txt文件将十六进制转换为十进制

来自分类Dev

T-SQL将十六进制转换为十进制

来自分类Dev

编写将十六进制转换为十进制的函数

来自分类Dev

将4字节的十六进制转换为十进制值

来自分类Dev

将R中的十六进制转换为十进制

来自分类Dev

Java代码问题将十进制代码转换为十六进制?

来自分类Dev

如何将十六进制字符串转换为十进制

来自分类Dev

C ++将十六进制md5哈希转换为十进制整数

来自分类Dev

使用sed或awk将十进制数据字段转换为十六进制

来自分类Dev

如何将十六进制字符串转换为十进制值

来自分类Dev

Python字典会自动将十六进制转换为十进制吗?

来自分类Dev

如何将十进制或十六进制值转换为整数?

来自分类Dev

Spark:将十六进制字符串转换为十进制

来自分类Dev

将十六进制值转换为十进制值

Related 相关文章

  1. 1

    将十进制转换为十六进制值

  2. 2

    将十六进制转换为十进制

  3. 3

    使用python将十六进制十进制数字转换为十进制

  4. 4

    PHP将大十进制数转换为十六进制

  5. 5

    PHP将十六进制转换为十进制不起作用

  6. 6

    在cmake中从十进制转换为十六进制

  7. 7

    ShellScript十六进制转换为十进制

  8. 8

    在 Swift 中将十六进制转换为十进制

  9. 9

    十进制数转换为十六进制数

  10. 10

    将字符串转换为十六进制,十进制和八进制

  11. 11

    将十六进制十进制IP地址转换为c#中的点表示法十进制

  12. 12

    如何将负十六进制转换为十进制

  13. 13

    如何将负十进制转换为十六进制?

  14. 14

    使用awk将第一列从十六进制转换为十进制

  15. 15

    如何使用大脑将十进制转换为十六进制?

  16. 16

    从类似csv的txt文件将十六进制转换为十进制

  17. 17

    T-SQL将十六进制转换为十进制

  18. 18

    编写将十六进制转换为十进制的函数

  19. 19

    将4字节的十六进制转换为十进制值

  20. 20

    将R中的十六进制转换为十进制

  21. 21

    Java代码问题将十进制代码转换为十六进制?

  22. 22

    如何将十六进制字符串转换为十进制

  23. 23

    C ++将十六进制md5哈希转换为十进制整数

  24. 24

    使用sed或awk将十进制数据字段转换为十六进制

  25. 25

    如何将十六进制字符串转换为十进制值

  26. 26

    Python字典会自动将十六进制转换为十进制吗?

  27. 27

    如何将十进制或十六进制值转换为整数?

  28. 28

    Spark:将十六进制字符串转换为十进制

  29. 29

    将十六进制值转换为十进制值

热门标签

归档