登录
首页 >  Golang >  Go问答

使用 golang 和 Nodejs 进行 Base64 编码

来源:stackoverflow

时间:2024-03-03 10:36:25 183浏览 收藏

小伙伴们有没有觉得学习Golang很有意思?有意思就对了!今天就给大家带来《使用 golang 和 Nodejs 进行 Base64 编码》,以下内容将会涉及到,若是在学习中对其中部分知识点有疑问,或许看了本文就能帮到你!

问题内容

我正在使用一个在节点中进行 base64 编码的软件,如下所示:

const enc = new buffer('test', 'base64')

console.log(enc) 显示:

我正在编写一个需要与此进行互操作的 golang 服务。但我无法在 go 中重现上述结果。

package main

import (
    "fmt"
    b64 "encoding/base64"
)

func main() {
    // attempt 1
    res := []byte(b64.urlencoding.encodetostring([]byte("test")))
    fmt.println(res)
    // attempt 2
    buf := make([]byte, 8)
    b64.urlencoding.encode(buf, []byte("test"))
    fmt.println(buf)
}

以上打印:

[100 71 86 122 100 65 61 61]
[100 71 86 122 100 65 61 61]

两者都与节点的输出有很大不同。我怀疑区别在于node将字符串存储为来自base64字符串的字节,而go将字符串存储为来自表示为base64的ascii/utf8字符串的字节。但还没有弄清楚如何像节点一样去做!

我浏览了编码的 go 源代码,然后尝试找到 buffer 的 node 源代码,但经过一段时间的搜寻后,我决定在这里发布可能会更快,希望有人立即知道答案。


解决方案


这个构造函数:

new buffer('test', 'base64')

使用 base64 编码对输入字符串 test 进行解码。它不使用 base64 对 test 进行编码。参见reference

new buffer(string[, encoding])
  • string 要编码的字符串。
  • encoding string 的编码。 默认: 'utf8'

等效的 go 代码是:

data, err := base64.stdencoding.decodestring("test")
if err != nil {
    panic(err)
}
fmt.printf("% x", data)

哪个输出(在 Go Playground 上尝试一下):

b5 eb 2d

要在 node.js 中进行编码,请使用(有关详细信息,请参阅 How to do Base64 encoding in node.js?):

Buffer.from("test").toString('base64')

今天关于《使用 golang 和 Nodejs 进行 Base64 编码》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>