zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit 0d8412d9f0afa399fbb9011c9f2f8f13a00a41a2 (tree)
parent ab387bb4c712b257cc2b728a044ad67935dee2dc
Author: Andrew Kelley <superjoe30@gmail.com>
Date:   Sun,  2 Sep 2018 19:08:54 -0400

Merge branch 'std-fmt-hexToBytes' of https://github.com/kristate/zig into kristate-std-fmt-hexToBytes

Diffstat:
Mstd/fmt/index.zig | 20++++++++++++++++++++
1 file changed, 20 insertions(+), 0 deletions(-)

diff --git 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); +} +