Je veux convertir de int en hex à Golang. Dans strconv, il existe une méthode qui convertit les chaînes en hexadécimal. Existe-t-il une méthode similaire pour obtenir une chaîne hexadécimale à partir d'un entier?
Puisque hex est un littéral entier , vous pouvez demander au package fmt une représentation sous forme de chaîne de cet entier, en utilisant fmt.Sprintf()
, et le %x
ou %X
format.
Voir aire de jeux
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)
Production:
Hex conv of '255' is 'ff'
HEX conv of '255' is 'FF'
"Hex" n'est pas une chose réelle. Vous pouvez utiliser une représentation hexadécimale d'un nombre, mais il n'y a pas de différence entre 0xFF
et 255
. Plus d'informations à ce sujet peut être trouvé dans la documentation qui indique que vous pouvez utiliser 0xff
pour définir une constante entière 255
! Comme vous le mentionnez, si vous essayez de trouver la représentation hexadécimale d'un entier, vous pouvez utiliser strconv
package main
import (
"fmt"
"strconv"
)
func main() {
fmt.Println(strconv.FormatInt(255, 16))
// gives "ff"
}
Si le formatage de certains octets, hex a besoin d'une représentation à 2 chiffres, avec un 0 en tête.
Par exemple: 1 => '01', 15 => '0f', etc.
Il est possible de forcer Sprintf à respecter ceci:
h:= fmt.Sprintf("%02x", 14)
fmt.Println(h) // 0e
h2:= fmt.Sprintf("%02x", 231)
fmt.Println(h2) // e7
Le motif "% 02x" signifie: