Skip to content

Commit 1a5c3e4

Browse files
authored
Merge pull request #1451 from kristate/fmt-hexbytes-issue1358
allow bytes to be printed-out as hex (#1358)
2 parents 19004cd + 7a633f4 commit 1a5c3e4

File tree

1 file changed

+11
-0
lines changed

1 file changed

+11
-0
lines changed

std/fmt/index.zig

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -350,6 +350,11 @@ pub fn formatText(
350350
comptime var width = 0;
351351
if (fmt.len > 1) width = comptime (parseUnsigned(usize, fmt[1..], 10) catch unreachable);
352352
return formatBuf(bytes, width, context, Errors, output);
353+
} else if ((fmt[0] == 'x') or (fmt[0] == 'X') ) {
354+
for (bytes) |c| {
355+
try formatInt(c, 16, fmt[0] == 'X', 0, context, Errors, output);
356+
}
357+
return;
353358
} else @compileError("Unknown format character: " ++ []u8{fmt[0]});
354359
}
355360
return output(context, bytes);
@@ -1271,6 +1276,12 @@ test "fmt.format" {
12711276

12721277
try testFmt("E.Two", "{}", inst);
12731278
}
1279+
//print bytes as hex
1280+
{
1281+
const some_bytes = "\xCA\xFE\xBA\xBE";
1282+
try testFmt("lowercase: cafebabe\n", "lowercase: {x}\n", some_bytes);
1283+
try testFmt("uppercase: CAFEBABE\n", "uppercase: {X}\n", some_bytes);
1284+
}
12741285
}
12751286

12761287
fn testFmt(expected: []const u8, comptime template: []const u8, args: ...) !void {

0 commit comments

Comments
 (0)