Go言語でbase58コマンドを書きました。コマンドラインツールだけではなくて、Goのパッケージとして作っています。
仕事の関係でbase58を扱うことがあり、base64コマンドのように素早くコマンドラインで変換できるツールが欲しくなったので作りました。ご自由にお使い下さい。
コマンドラインツールは次のように使うことができます。
$ go get github.com/itchyny/base58-go/cmd/base58 $ base58 100000000 9QwvW 79228162514264337593543950336 5QchsBFApWPVxyp9C ^D $ base58 --decode # or base58 -D 9QwvW 100000000 5QchsBFApWPVxyp9C 79228162514264337593543950336 ^D $ echo 100000000 | base58 9QwvW $ echo 9QwvW | base58 --decode 100000000 $ echo 100000000 | base58 --encoding=bitcoin 9qXWw
既存のパッケージは出来が微妙でした。Go言語のbase58ライブラリはtv42/base58があるのですが、encodingがFlickr固定になっていたり、pull requestが何か月も放置されていたり、0から始まる数字の時の挙動がおかしかったりします。0から始まる数字の時の問題はパッケージのインターフェースの問題であり、簡単なpull requestで直せるものではなかったので、新しくパッケージを作らざるを得ませんでした。
引数は16進数のほうが良いのか、あるいはbig-endianでencodeされたbinary列のほうが良いのかとかいまいち分かってなくて、とりあえずコマンドラインツールとの結合がやりやすい10進表現のbyte列にしてしまいました。Bitcoinはよく分からないけど16進表現が使われているらしいので、要望があれば用意するかもしれません。
バグや機能要望はGitHubのissuesからお願いします。