Go语言实现Base64、Base58编码与解码,很简单

开发 前端
如何在Go语言中实现Base64和Base58的编码与解码。Base64使用了Go标准库,而Base58则使用了btcsuite/btcutil第三方库。通过这些代码,可以轻松实现对字符串的Base64和Base58编码与解码操作。

在Go语言中,实现Base64和Base58编码与解码是非常常见的任务。Go标准库中已经包含了Base64的编码与解码函数,而Base58需要使用第三方库来实现。

下面分别介绍Base64和Base58编码与解码的实现方法。

Base64 编码与解码

Go标准库的encoding/base64包提供了Base64编码与解码的功能。

示例代码

package main

import (
    "encoding/base64"
    "fmt"
)

// Base64Encode encodes a string to Base64
func Base64Encode(input string) string {
    return base64.StdEncoding.EncodeToString([]byte(input))
}

// Base64Decode decodes a Base64 encoded string
func Base64Decode(input string) (string, error) {
    decoded, err := base64.StdEncoding.DecodeString(input)
    if err != nil {
        return "", err
    }
    return string(decoded), nil
}

func main() {
    original := "Hello, World!"
    fmt.Println("Original:", original)

    encoded := Base64Encode(original)
    fmt.Println("Encoded:", encoded)

    decoded, err := Base64Decode(encoded)
    if err != nil {
        fmt.Println("Error decoding:", err)
        return
    }
    fmt.Println("Decoded:", decoded)
}

Base58 编码与解码

Base58常用于比特币等加密货币的地址编码。Go语言中,可以使用第三方库github.com/btcsuite/btcutil/base58来实现Base58编码与解码。

示例代码

首先,安装btcsuite/btcutil包:

go get github.com/btcsuite/btcutil/base58

然后,实现Base58编码与解码:

package main

import (
    "fmt"
    "github.com/btcsuite/btcutil/base58"
)

// Base58Encode encodes a string to Base58
func Base58Encode(input string) string {
    return base58.Encode([]byte(input))
}

// Base58Decode decodes a Base58 encoded string
func Base58Decode(input string) (string, error) {
    decoded := base58.Decode(input)
    return string(decoded), nil
}

func main() {
    original := "Hello, World!"
    fmt.Println("Original:", original)

    encoded := Base58Encode(original)
    fmt.Println("Encoded:", encoded)

    decoded, err := Base58Decode(encoded)
    if err != nil {
        fmt.Println("Error decoding:", err)
        return
    }
    fmt.Println("Decoded:", decoded)
}

代码分析

Base64

1 编码:

func Base64Encode(input string) string {
    return base64.StdEncoding.EncodeToString([]byte(input))
}

将字符串转换为字节数组,然后使用EncodeToString方法进行Base64编码。

2 解码:

func Base64Decode(input string) (string, error) {
    decoded, err := base64.StdEncoding.DecodeString(input)
    if err != nil {
        return "", err
    }
    return string(decoded), nil
}

使用DecodeString方法进行Base64解码,并将结果转换为字符串。如果解码过程中出现错误,返回错误信息。

Base58

1 编码:

func Base58Encode(input string) string {
    return base58.Encode([]byte(input))
}

将字符串转换为字节数组,然后使用base58.Encode方法进行Base58编码。

2 解码:

func Base58Decode(input string) (string, error) {
    decoded := base58.Decode(input)
    return string(decoded), nil
}

使用base58.Decode方法进行Base58解码,并将结果转换为字符串。

总结

上述代码展示了如何在Go语言中实现Base64和Base58的编码与解码。Base64使用了Go标准库,而Base58则使用了btcsuite/btcutil第三方库。通过这些代码,可以轻松实现对字符串的Base64和Base58编码与解码操作。

责任编辑:武晓燕 来源: Go语言圈
相关推荐

2024-07-31 10:22:49

Go语言编码

2024-02-28 23:07:42

GolangBase64编码

2014-02-20 10:28:28

JavaScriptBase64

2021-09-07 08:59:09

编码Base64解码

2022-10-29 19:58:09

Base64Bashshell

2023-03-01 11:02:12

2022-06-06 08:31:05

Base64编码Base58

2023-11-07 08:35:26

2021-03-05 09:10:19

base64编码

2016-12-13 13:50:06

JAVA转换Base64

2019-07-23 08:55:46

Base64编码底层

2021-02-05 05:26:33

字节ASCII控制

2022-10-26 07:26:38

2019-08-09 11:40:38

JavaScriptCSS技术

2010-03-03 16:14:05

Python base

2021-08-26 05:27:08

Base64 字节流算法

2021-11-25 08:11:47

JS网站信息

2022-09-28 08:01:33

JavaScript二进制

2016-10-13 13:12:43

微信小程序javascript

2023-01-26 00:31:25

ASCIIBase64UTF-8
点赞
收藏

51CTO技术栈公众号