On Monday, 19 May 2014 at 11:36:43 UTC, Darren wrote:
String hexnum = "16D81B16E091F31BEF";

string (lowercase)

I'd like to convert it into a ubyte[] in order to Base64 encode it (or, indeed ASCII85 or Base32).

eg, [16, D8, 1B, 16, E0, 91, F3, 1B, EF]

Is there an idiomatic/simple way to do that?

import std.conv: parse;
import std.array: array;
import std.range: chunks;
import std.algorithm: map;

ubyte[] bytes = hexnum /* "16D8..." */
     .chunks(2) /* "16", "D8", ... */
     .map!(twoDigits => twoDigits.parse!ubyte(16)) /* 0x16, 0xD8,
... */
     .array();

Reply via email to