Я хочу преобразовать из int в hex в Golang. В strconv существует метод, который преобразует строки в hex. Есть ли аналогичный метод для получения шестнадцатеричной строки из int?
Как я могу конвертировать из int в hex
Ответ 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' для преобразования в шестнадцатеричном формате