いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

Goメモ-196 (strconvパッケージ Tips)(2進数文字列から16進数文字列へ変換)

概要

以下自分用のメモです。よく忘れるのでここにメモメモ。。。

サンプル

package strconvs

import (
    "strconv"

    "github.com/devlights/gomy/output"
)

// BinToHex -- 2進数文字列から16進数文字列へ変換するサンプルです。
func BinToHex() error {
    //
    // 2進数から16進数へ変換する場合は以下の2段階で変換する.
    //   1) strconv.ParseInt() で int へ
    //   2) strconv.FormatInt() で string へ
    //

    var (
        values = []string{
            "0b11111111",
            "0b11011110101011011011111011101111",
        }
    )

    for _, v := range values {
        var (
            parsed int64
            err    error
        )

        parsed, err = strconv.ParseInt(v, 0, 0)
        if err != nil {
            return err
        }

        var (
            converted = strconv.FormatInt(parsed, 16)
        )

        output.Stdoutl("[original]", v)
        output.Stdoutl("[parsed  ]", parsed)
        output.Stdoutl("[conveted]", converted)
        output.StdoutHr()
    }

    return nil
}

実行すると以下のようになります。

gitpod /workspace/try-golang (master) $ make run
go run -race main.go -onetime -example ""

ENTER EXAMPLE NAME: strconvs_bin_to_hex

[Name] "strconvs_bin_to_hex"
[original]           0b11111111
[parsed  ]           255
[conveted]           ff
-------------------------------------------------- 
[original]           0b11011110101011011011111011101111
[parsed  ]           3735928559
[conveted]           deadbeef
-------------------------------------------------- 


[Elapsed] 233.57µs

参考情報

https://pkg.go.dev/strconv@go1.18#ParseInt

https://pkg.go.dev/strconv@go1.18#FormatInt

https://go.dev/tour/basics/11


過去の記事については、以下のページからご参照下さい。

サンプルコードは、以下の場所で公開しています。