diff --git a/src/from_hex.zig b/src/from_hex.zig new file mode 100644 index 0000000000000000000000000000000000000000..0ad64b93fc2bbfb502d481289a5ce814015b2991 --- /dev/null +++ b/src/from_hex.zig @@ -0,0 +1,18 @@ +const std = @import("std"); +const string = []const u8; +const extras = @import("./lib.zig"); +const parseDigits = extras.parseDigits; + +pub fn from_hex(array: anytype) [array.len / 2]u8 { + var result: [array.len / 2]u8 = undefined; + for (0..array.len / 2) |i| result[i] = parseDigits(u8, array[i * 2 ..][0..2], 16) catch unreachable; + return result; +} + +test { + try std.testing.expectEqualSlices( + u8, + &.{ 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x30 }, + &from_hex("3132333435363738393031323334353637383930"), + ); +} diff --git a/src/lib.zig b/src/lib.zig index e4947bf716741ad2e75a25da45974ecd85ac6252..7a2b85c9df7cd51cdaa0a90e16e0a1185a74d029 100644 --- a/src/lib.zig +++ b/src/lib.zig @@ -119,3 +119,4 @@ pub usingnamespace @import("./compareFnField.zig"); pub usingnamespace @import("./compareFnRange.zig"); pub usingnamespace @import("./asciiLower.zig"); pub usingnamespace @import("./parseDigits.zig"); +pub usingnamespace @import("./from_hex.zig");