0

我面临将十六进制表示转换为基数 32 的问题,反之亦然。

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

我已经尝试过base32Encode十六进制值,hexdec然后base32编码它们实际上都没有工作:(

十六进制:686aa8fca1767a5c1cc23b0f982380d6ba6d07ff32fafe8e

base32:NBVKR7FBOZ5FYHGCHMHZQI4A225G2B77GL5P5DQ

我在这里需要什么,我需要从十六进制值获取(转换)base32 值,反之亦然,就像从基数 32 获取十六进制值一样。

就这样

更新1:

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

截屏: 在此处输入图像描述

谢谢

4

2 回答 2

1

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
于 2021-04-23T22:54:40.963 回答
-1

假设您的意思是 base36 而不是 base32:

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

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

输出:

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

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

于 2021-04-23T20:40:47.700 回答