PHP 将十六进制转换为 Base32,反之亦然

PHP Convert Hext To Base32 And Vice Versa

我在将十六进制表示形式转换为基数 32 时遇到问题,反之亦然。

所有在线转换都是基于 JavaScript 的,但我到处搜索后找不到任何基于 PHP 的解决方案:(

我试过 base32Encode 十六进制值,hexdec 然后 base32 encode none 它们实际上有效:(

十六进制:686aa8fca1767a5c1cc23b0f982380d6ba6d07ff32fafe8e

base32: NBVKR7FBOZ5FYHGCHMHZQI4A225G2B77GL5P5DQ

我在这里需要什么,我需要从十六进制值获取(转换)base32 值,反之亦然,例如从 base 32 获取十六进制值。

就这些了

更新 1:

以下站点可以按照我正在寻找的方式从十六进制编码为 base32。但我不知道他们是怎么做到的。:(

截图:

谢谢

假设您指的是 base36 而不是 base32:

$in16 = '686aa8fca1767a5c1cc23b0f982380d6ba6d07ff32fafe8e';
$in36 = 'NBVKR7FBOZ5FYHGCHMHZQI4A225G2B77GL5P5DQ';

var_dump(
    base_convert($in16, 16, 32),
    base_convert($in36, 36, 16)
);

输出:

string(39) "1k6la7sk5r7o000000000000000000000000000"
string(51) "200727aed64d340000000000000000000000000000000000000"

最后所有那些零,闻起来像加密货币。

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