首页 / GO / go语言 base58编码解码
go语言 base58编码解码
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了go语言 base58编码解码,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1642字,纯文字阅读大概需要3分钟。
内容图文
![go语言 base58编码解码](/upload/InfoBanner/zyjiaocheng/1158/c8995fcc02764ae3bf67334bc937453b.jpg)
package main import ( " bytes " " encoding/hex " " fmt " " math/big " ) var base58Alphabets = []byte("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz") func main() { // testReverse() str := "a" _, res := Base58Encode([]byte(str)) fmt.Println("res=", res) resByte, resStr := Base58Decode([]byte(res)) fmt.Println("resByte=", resByte) fmt.Println("resStr=", resStr) } // Base58Encode 编码 func Base58Encode(input []byte) ([]byte, string) { x := big.NewInt(0).SetBytes(input) fmt.Println("x=", x) base := big.NewInt(58) zero := big.NewInt(0) mod := &big.Int{} var result []byte// 被除数/除数=商……余数 fmt.Println("开始循环-------") for x.Cmp(zero) != 0 { x.DivMod(x, base, mod) fmt.Println("mod=", mod) fmt.Println("x=", x) result = append(result, base58Alphabets[mod.Int64()]) fmt.Println("一次循环结束-------") } ReverseBytes(result) return result, string(result) } // Base58Decode 解码 func Base58Decode(input []byte) ([]byte, string) { result := big.NewInt(0) for _, b := range input { charIndex := bytes.IndexByte(base58Alphabets, b) result.Mul(result, big.NewInt(58)) result.Add(result, big.NewInt(int64(charIndex))) } decoded := result.Bytes() if input[0] == base58Alphabets[0] { decoded = append([]byte{0x00}, decoded...) } return decoded, string(decoded) } func testReverse() { str := "12345678"// data := []byte(str) data, _ := hex.DecodeString(str) fmt.Println(data) ReverseBytes(data) fmt.Println(fmt.Sprintf("%v", data)) } // ReverseBytes 翻转字节 func ReverseBytes(data []byte) { for i, j := 0, len(data)-1; i < j; i, j = i+1, j-1 { data[i], data[j] = data[j], data[i] } }
原文:https://www.cnblogs.com/Mishell/p/12241872.html
内容总结
以上是互联网集市为您收集整理的go语言 base58编码解码全部内容,希望文章能够帮你解决go语言 base58编码解码所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。