Как я могу конвертировать из int в hex

Я хочу преобразовать из int в hex в Golang. В strconv существует метод, который преобразует строки в hex. Есть ли аналогичный метод для получения шестнадцатеричной строки из int?

Ответ 1

Так как hex является целым числом, вы можете задать fmt package для строкового представления этого целого числа, используя fmt.Sprintf() и формат %x или %x.
См. детскую площадку

i := 255
h := fmt.Sprintf("%x", i)
fmt.Printf("Hex conv of '%d' is '%s'\n", i, h)
h = fmt.Sprintf("%X", i)
fmt.Printf("HEX conv of '%d' is '%s'\n", i, h)

Вывод:

Hex conv of '255' is 'ff'
HEX conv of '255' is 'FF'

Ответ 2

"Hex" - это не настоящая вещь. Вы можете использовать шестнадцатеричное представление числа, но нет разницы между 0xFF и 255. Подробнее о том, что можно найти в документах, которые указывают, что вы можете использовать 0xFF для определения целочисленной константы 255! Как вы заметили, если вы пытаетесь найти шестнадцатеричное представление целого числа, вы можете использовать strconv

package main

import (
    "fmt"
    "strconv"
)

func main() {
    fmt.Println(strconv.FormatInt(255, 16))
    // gives "ff"
}

Попробуйте на игровой площадке

Ответ 3

Если форматирование некоторых байтов, hex нуждается в представлении с двумя цифрами, с ведущим 0.

Например: 1 = > '01', 15 = > '0f' и т.д.

Можно заставить Sprintf соблюдать это:

h:= fmt.Sprintf("%02x", 14)
fmt.Println(h) // 0e
h2:= fmt.Sprintf("%02x", 231)
fmt.Println(h2) // e7

Образец "% 02x" означает:

  • '0' сила с использованием нулей
  • '2' задает выходной размер как два символа
  • 'x' для преобразования в шестнадцатеричном формате