首页 > 解决方案 > 如何在 Vala 中将 int64 格式化为大写十六进制?

问题描述

以下示例无法编译

    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 格式字符串,但十六进制没有(参见Valadoc)。%X也不起作用。如何获得 int64 的大写十六进制格式?

标签: stringhexprintfvala

解决方案


错误是类型错误:参数 2:无法转换int64uint

print使用printf 格式字符串并接受 long long 类型,该类型至少指定为 64 位。您可以使用%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);
}

推荐阅读