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 { |
||
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) |
||
} |
} |