2015-11-07 364 views

回答

11

由于十六进制是一个Integer literal,你可以问fmt package为一个字符串表示整数,使用fmt.Sprintf(),以及%x%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) 

输出:

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

“十六进制”不是一个真实的东西。您可以使用数字的十六进制表示形式,但0xFF255之间没有区别。有关can be found in the docs的更多信息,指出您可以使用0xff来定义整数常量255!至于你提到的,如果你想找到一个整数的十六进制表示可以使用strconv

package main 

import (
    "fmt" 
    "strconv" 
) 

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

Try it in the playground

3

如果格式化一些字节,十六进制需要一个2个位数表示,与领先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' 至十六进制
  • 转换