Golangでintから16進数に変換したい。 strconvには、文字列を16進数に変換するメソッドがあります。 intから16進文字列を取得する同様の方法はありますか?
16進数は 整数リテラル であるため、 fmt.Sprintf()
を使用して、その整数の文字列表現を fmtパッケージ に要求できます。 、 そしてその %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'
「六角」は本物ではありません。数値の16進表現を使用できますが、0xFF
と255
の間に違いはありません。それに関する詳細情報 ドキュメントで見つけることができます0xff
を使用して整数定数255
を定義できることを示しています!言及したように、整数の16進表現を見つけようとしている場合は、strconv
を使用できます。
package main
import (
"fmt"
"strconv"
)
func main() {
fmt.Println(strconv.FormatInt(255, 16))
// gives "ff"
}
一部のバイトをフォーマットする場合、16進数には先頭に0を付けた2桁の表現が必要です。
例:1 => '01'、15 => '0f'など.
Sprintfにこれを尊重させることができます:
h:= fmt.Sprintf("%02x", 14)
fmt.Println(h) // 0e
h2:= fmt.Sprintf("%02x", 231)
fmt.Println(h2) // e7
パターン「%02x」は次を意味します。