diff options
| author | kristopher tate <kris.tate+github@gmail.com> | 2018-09-02 18:02:24 +0900 |
|---|---|---|
| committer | kristopher tate <kris.tate+github@gmail.com> | 2018-09-03 01:12:52 +0900 |
| commit | fbd9bac5e7166a9b4ceb56ecb3a659abf6076311 (patch) | |
| tree | d72e1e976e78386640723f9a92f298c373a9a92a | |
| parent | 86e55567b4b1cccbb69065396391e4a500864dce (diff) | |
| download | zig-fbd9bac5e7166a9b4ceb56ecb3a659abf6076311.tar.gz zig-fbd9bac5e7166a9b4ceb56ecb3a659abf6076311.zip | |
std/fmt/index.zig: add hexToBytes function under std.fmt;
Depends on #1454 being implemented;
| -rw-r--r-- | std/fmt/index.zig | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/std/fmt/index.zig b/std/fmt/index.zig index f9b68d7941..13a0b525d7 100644 --- a/std/fmt/index.zig +++ b/std/fmt/index.zig @@ -1331,3 +1331,23 @@ pub fn isWhiteSpace(byte: u8) bool { else => false, }; } + +// depends on https://github.com/ziglang/zig/pull/1454 +pub fn hexToBytes(input: []const u8, out: []u8) !void { + if (out.len * 2 < input.len) + return error.InvalidLength; + + var i: usize = 0; + while (i < input.len) : (i += 2) { + out[i/2] = (try charToDigit(input[i], 36)) << 4; + out[i/2] += try charToDigit(input[i+1], 36); + } +} + +test "fmt.hexToBytes" { + const test_hex_str = "909A312BB12ED1F819B3521AC4C1E896F2160507FFC1C8381E3B07BB16BD1706"; + var pb: [32]u8 = undefined; + try hexToBytes(test_hex_str, pb[0..]); + try testFmt(test_hex_str, "{X}", pb); +} + |
