web-dev-qa-db-ja.com

どのようにintからhexに変換できますか

Golangでintから16進数に変換したい。 strconvには、文字列を16進数に変換するメソッドがあります。 intから16進文字列を取得する同様の方法はありますか?

18
KiYugadgeter

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

「六角」は本物ではありません。数値の16進表現を使用できますが、0xFF255の間に違いはありません。それに関する詳細情報 ドキュメントで見つけることができます0xffを使用して整数定数255を定義できることを示しています!言及したように、整数の16進表現を見つけようとしている場合は、strconvを使用できます。

package main

import (
    "fmt"
    "strconv"
)

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

遊び場で試してみてください

30
Adam Smith

一部のバイトをフォーマットする場合、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」は次を意味します。

  • ゼロを使​​用する「0」の強制
  • '2'は出力サイズを2文字に設定します
  • 16進数に変換する 'x'
12
Lioda