いろいろ備忘録日記

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

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

概要

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

サンプル

package strconvs

import (
    "strconv"

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

// BinToDec -- 2進数文字列を10進数に変換するサンプルです.
//
// REFERENCES
//  - https://pkg.go.dev/strconv
func BinToDec() error {
    var (
        values = []string{
            "11111111",
            "11011110101011011011111011101111",
        }
    )

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

        // ParseInt() の 第2引数 base に 0 以外の値を指定している場合
        // prefix 付きの文字列を指定するとエラーとなる.
        // (ex: 0b1111 はエラーとなる。 1111 はOK)
        parsed, err = strconv.ParseInt(v, 2, 64)
        if err != nil {
            return err
        }

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

    return nil
}

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

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

ENTER EXAMPLE NAME: strconvs_bin_to_dec

[Name] "strconvs_bin_to_dec"
[original]           11111111
[parsed  ]           255
-------------------------------------------------- 
[original]           11011110101011011011111011101111
[parsed  ]           3735928559
-------------------------------------------------- 


[Elapsed] 187.389µs

参考情報

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

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


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

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