在Zig中如何将数字以十六进制打印出来?

huangapple go评论63阅读模式
英文:

How to print a number as hexadecimal in Zig?

问题

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?

英文:
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?

答案1

得分: 1

将`x`或`X`放入大括号中。还有其他选项:

```zig
const std = @import("std");

pub fn main() void {
    // 在 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"(不截断)
    std.debug.print("0x{x:0>8}\n", .{qux}); // "0x001a2b3c"
}

有关占位符的更多信息,请参阅 https://github.com/ziglang/zig/blob/master/lib/std/fmt.zig


<details>
<summary>英文:</summary>

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

```zig
const std = @import(&quot;std&quot;);

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

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

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

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

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

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

huangapple
  • 本文由 发表于 2023年6月6日 08:43:31
  • 转载请务必保留本文链接:https://go.coder-hub.com/76410773.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定