Base58Check encoding: Difference between revisions

Content added Content deleted
m (→‎{{header|Go}}: Minor changes - results unaffected.)
(→‎{{header|Go}}: More idiomatic error handling.)
Line 159: Line 159:
import (
import (
"fmt"
"fmt"
"log"
"math/big"
"math/big"
"strings"
"strings"
Line 176: Line 177:
}
}


func convertToBase58(hash string, base int) string {
func convertToBase58(hash string, base int) (string, error) {
var x, ok = new(big.Int).SetString(hash, base)
var x, ok = new(big.Int).SetString(hash, base)
if !ok {
if !ok {
panic(fmt.Sprintf("'%v' is not a valid integer in base '%d'", hash, base))
return "", fmt.Errorf("'%v' is not a valid integer in base '%d'", hash, base)
}
}
var sb strings.Builder
var sb strings.Builder
Line 188: Line 189:
sb.WriteByte(alphabet[r])
sb.WriteByte(alphabet[r])
}
}
return reverse(sb.String())
return reverse(sb.String()), nil
}
}


func main() {
func main() {
s := "25420294593250030202636073700053352635053786165627414518"
s := "25420294593250030202636073700053352635053786165627414518"
b := convertToBase58(s, 10)
b, err := convertToBase58(s, 10)
if err != nil {
log.Fatal(err)
}
fmt.Println(s, "->", b)
fmt.Println(s, "->", b)
hashes := [...]string{
hashes := [...]string{
Line 207: Line 211:
}
}
for _, hash := range hashes {
for _, hash := range hashes {
b58 := convertToBase58(hash, 0)
b58, err := convertToBase58(hash, 0)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%-56s -> %s\n", hash, b58)
fmt.Printf("%-56s -> %s\n", hash, b58)
}
}