如何解决PHP 将十六进制转换为 Base32,反之亦然
我在将十六进制表示转换为基数 32 时遇到问题,反之亦然。
所有在线转换都是基于 JavaScript 的,但是我在这里和那里搜索之后找不到任何基于 PHP 的解决方案:(
我尝试过 base32Encode 十六进制值,hexdec 然后 base32 编码它们都没有实际工作:(
十六进制:686aa8fca1767a5c1cc23b0f982380d6ba6d07ff32fafe8e
base32:NBVKR7FBOZ5FYHGCHMHZQI4A225G2B77GL5P5DQ
我在这里需要的是,我需要从十六进制值中获取(转换)base32 值,反之亦然,例如从基数 32 中获取十六进制值。
就这些
更新 1:
以下站点可以按照我正在寻找的方式从十六进制编码到 base32。但我不知道他们是怎么做到的..:(
谢谢
解决方法
Sammitch 建议的库工作正常(它与您发布的网站一样符合 RFC 4648),但您需要将 hex2bin()
/bin2hex()
添加到组合中才能获得您想要的结果'在:
require 'path/to/vendor/autoload.php';
use Base32\Base32;
$hex = '686aa8fca1767a5c1cc23b0f982380d6ba6d07ff32fafe8e';
// Hex to Base32
$to_base32 = Base32::encode(hex2bin($hex));
var_dump($to_base32); // NBVKR7FBOZ5FYHGCHMHZQI4A225G2B77GL5P5DQ=
// Base32 to Hex
$to_hex = bin2hex(Base32::decode($to_base32));
var_dump($to_hex); // 686aa8fca1767a5c1cc23b0f982380d6ba6d07ff32fafe8e
,
假设您指的是 base36 而不是 base32:
$in16 = '686aa8fca1767a5c1cc23b0f982380d6ba6d07ff32fafe8e';
$in36 = 'NBVKR7FBOZ5FYHGCHMHZQI4A225G2B77GL5P5DQ';
var_dump(
base_convert($in16,16,32),base_convert($in36,36,16)
);
输出:
string(39) "1k6la7sk5r7o000000000000000000000000000"
string(51) "200727aed64d340000000000000000000000000000000000000"
最后所有的零,闻起来像加密货币。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。