Как преобразовать целое число в шестнадцатеричную строку фиксированной длины в Go? - PullRequest
0 голосов
/ 08 мая 2020

Я хочу преобразовать целое число в шестнадцатеричную строку с фиксированной длиной 64 символа, с добавлением нулей для целочисленных значений, которые не используют все 32 шестнадцатеричных значения. Если я попробую сделать следующее, перед s будут добавлены пробелы, а не нули.

i := 898757
s := fmt.Sprintf("%64x", i)
fmt.Println(s)

1 Ответ

3 голосов
/ 08 мая 2020

Правильный формат: "%064x":

fmt.Printf("%064x\n", 898757)

00000000000000000000000000000000000000000000000000000000000db6c5

, где начальный 0 - это «флаг» для строки форматирования. Согласно fmt docs :

0: заполнение начальными нулями, а не пробелами; для чисел это перемещает отступ после знака

Лично я предпочитаю использовать точку для отделения флагов от поля длины. Технически это работает, потому что . не имеет смысла с целочисленными глаголами и игнорируется. Я считаю это полезным визуальным индикатором. Строка формата становится "%0.64x".

.
...