D 如何将BigInt转换为ubyte[]?
我有一个很长的号码要编码: 例如:42140043491950871535 我想做的是用各种编码来表示它,例如Base64、asci85或Base32 为了做到这一点,我想我可能需要将它放入一个基于std.base64的API的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
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();