web-dev-qa-db-fra.com

Comment puis-je convertir de int en hex

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?

18
KiYugadgeter

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'
24
VonC

"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"
}

Essayez-le dans la cour de récréation

30
Adam Smith

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:

  • Force '0' en utilisant des zéros
  • '2' définit la taille de sortie comme deux caractères
  • 'x' pour convertir en hexadécimal
12
Lioda