gpt4 book ai didi

node.js - golang base64 编码 vs nodejs 缓冲区 base64 编码

转载 作者:IT王子 更新时间:2023-10-29 02:37:11 27 4
gpt4 key购买 nike

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

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

console.log(enc) 显示:

<Buffer b5 eb 2d>

我正在编写一个需要与之互操作的 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 的输出有很大不同。我怀疑不同之处在于 Node 将字符串存储为来自 base64 字符串的字节,而 go 将字符串存储为来自表示为 base64 的 ascii/utf8 字符串的字节。但是还没有想出如何像 Node 那样去做!

我浏览了编码的 go 源代码,然后试图找到 Buffer 的 Node 源代码,但经过一段时间的搜索后我决定将它发布在这里可能会更快,希望有人知道答案。

最佳答案

这个构造函数:

new Buffer('test', 'base64')

解码输入字符串test,使用base64编码。它不使用 base64 对 test 进行编码。查看reference :

new Buffer(string[, encoding])
  • string String to encode.
  • encoding The encoding of string. Default: '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')

关于node.js - golang base64 编码 vs nodejs 缓冲区 base64 编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51626547/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com