如何在 Vala 中将 int64 格式化为大写十六进制?

How to format int64 to upper case hex in Vala?

下面的例子编译不通过

    public static int main (string[] args) {
        var now = new GLib.DateTime.now_utc();
        int64 val = now.to_unix();
        print ("%" + int64.FORMAT + "\n", val);
        print ("%X\n", val);  // ERROR
        return 0;
    }

有一个用于十进制表示的 int64 格式字符串,但用于十六进制的 none(参见 Valadoc)。 %X 也不起作用。如何获取 int64 的大写十六进制格式?

错误是类型错误:参数 2:无法从 int64 转换为 uint

print 使用 printf format string 并接受指定为至少 64 位的 long long 类型。您可以使用 %llX 将 int64 打印为大写十六进制。

工作示例:

void main () {
    var now = new GLib.DateTime.now_utc();
    int64 val = now.to_unix();
    print ("%" + int64.FORMAT + "\n", val);
    print ("%llX\n", val);
}