【发布时间】:2016-08-29 04:14:04
【问题描述】:
我正在使用内置 OpenSSL 库从数字证书中提取序列,但是,我无法将此数字精确地转换为十六进制。
提取的数字最初是十进制的,但我需要十六进制。
我要转换的数字是:114483222461061018757513232564608398004
这是我尝试过的:
-
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 解决方案。
【问题讨论】:
-
如何获取号码?你能以字符串的形式获取它(不强制转换)吗?
-
这里是数字证书:pastebin.com/34Tgs6Lw
$cert = openssl_x509_parse($certdata);然后echo $cert['serialNumber'];
标签: php