D 如何将BigInt转换为ubyte[]?

D 如何将BigInt转换为ubyte[]?,d,D,我有一个很长的号码要编码: 例如:42140043491950871535 我想做的是用各种编码来表示它,例如Base64、asci85或Base32 为了做到这一点,我想我可能需要将它放入一个基于std.base64的API的ubyte[]。我很难想出怎么做。我可以将其转换为十六进制字符串,如下所示: import std.stdio; import std.bigint; import std.conv; void main() { BigInt bignumber = ("421

我有一个很长的号码要编码:

例如:42140043491950871535

我想做的是用各种编码来表示它,例如Base64、asci85或Base32

为了做到这一点,我想我可能需要将它放入一个基于std.base64的API的
ubyte[]
。我很难想出怎么做。我可以将其转换为十六进制字符串,如下所示:

import std.stdio;
import std.bigint;
import std.conv;

void main() {
    BigInt bignumber = ("421400434911950871535");

    string hexstr;

    bignumber.toString(delegate (foo){hexstr = to!string(foo); }, "%X");

    writeln(hexstr);

;}
这让我

"16_D81B16E0_91F31BEF".
我要做的是将其放入一个如下所示的
ubyte[]

[16, D8, 1B, 16, E0, 91, F3, 1B, EF]
有没有简单的方法可以做到这一点?

到目前为止最好的答案是:


啊,如果内部数据不是私有的,那就容易了!编辑:但它是。。。除了修改源代码之外,我看不到任何方法来实现它:(我真正想要的是node.js的功能:新缓冲区(“25001000192CD0000002F6D6E742F72”,“hex”):)稍微编辑以处理非2倍长度的字符串
import std.conv: parse;
import std.array: array;
import std.range: chunks;
import std.algorithm: map;

auto hexstr = "16D81B16E091F31BEF";

ubyte[] bytes = (hexstr.length % 2 ? "0" ~ hexstr : hexstr)
                .chunks(2)
                .map!(twoDigits => twoDigits.parse!ubyte(16))
                .array();