Как отформатировать int64 в верхний регистр hex в Vala? - PullRequest
1 голос
/ 11 марта 2020

В следующем примере не компилируется

    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 для десятичного представления, но отсутствует для шестнадцатеричного (см. Valado c). %X тоже не работает. Как получить шестнадцатеричное форматирование в верхнем регистре для int64?

1 Ответ

2 голосов
/ 11 марта 2020

Ошибка является ошибкой типа: Аргумент 2: Невозможно преобразовать из int64 в uint

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);
}
...