2015-11-07 17 views

risposta

11

Dal momento che esadecimale è un Integer literal, si può chiedere al fmt package per una rappresentazione di stringa che intero, utilizzando fmt.Sprintf() e il formato %x o %X.
See playground

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) 

uscita:

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

"Hex" non è una cosa reale. È possibile utilizzare una rappresentazione esadecimale di un numero, ma non c'è differenza tra 0xFF e 255. Maggiori informazioni su quello can be found in the docs che evidenziano che è possibile utilizzare 0xff per definire una costante intera 255! Come si parla, se si sta cercando di trovare la rappresentazione esadecimale di un numero intero è possibile utilizzare strconv

package main 

import (
    "fmt" 
    "strconv" 
) 

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

Try it in the playground

3

Se la formattazione alcuni byte, esagono necessaria una rappresentazione 2 cifre, con i principali 0.

Per Esempio: 1 => '01', 15 => '0f', ecc.

È possibile forzare Sprintf a rispettare questo:

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

Il pattern "% 02x" significa:

  • '0' forza utilizzando zeri
  • '2' impostare il formato di uscita come due charactes
  • 'x' per convertire in esadecimale