Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to print a number as hexadecimal in Zig?

Tags:

hex

zig

const std = @import("std");

pub fn main() void {
    const foo: u8 = 128;
    std.debug.print("{}\n", .{foo}); // "128"
}

The above prints 128 as expected.
How can the value be printed as hexadecimal instead?

like image 646
Costava Avatar asked Aug 31 '25 17:08

Costava


1 Answers

Put x or X inside the curly brackets.
There are additional options as well:

const std = @import("std");

pub fn main() void {
    // Tested with Zig v0.10.1

    const foo: u8 = 26;
    std.debug.print("0x{x}\n", .{foo}); // "0x1a"
    std.debug.print("0x{X}\n", .{foo}); // "0x1A"

    const bar: u16 = 1;
    std.debug.print("0x{x}\n", .{bar}); //     "0x1"
    std.debug.print("0x{x:2}\n", .{bar}); //   "0x 1"
    std.debug.print("0x{x:4}\n", .{bar}); //   "0x   1"
    std.debug.print("0x{x:0>4}\n", .{bar}); // "0x0001"

    const baz: u16 = 43;
    std.debug.print("0x{x:0>4}\n", .{baz}); // "0x002b"
    std.debug.print("0x{X:0>8}\n", .{baz}); // "0x0000002B"

    const qux: u32 = 0x1a2b3c;
    std.debug.print("0x{X:0>2}\n", .{qux}); // "0x1A2B3C" (not cut off)
    std.debug.print("0x{x:0>8}\n", .{qux}); // "0x001a2b3c"
}

You can read more about the placeholders at https://github.com/ziglang/zig/blob/master/lib/std/fmt.zig

like image 55
Costava Avatar answered Sep 04 '25 14:09

Costava