我正在使用base64在node中編碼的軟件,如下所示:const enc = new Buffer('test', 'base64')console.log(enc) 顯示:<Buffer b5 eb 2d>我正在編寫需要與此互操作的golang服務(wù)。但是我無法在go中重現(xiàn)以上結(jié)果。package mainimport ( "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]兩者都與節(jié)點的輸出完全不同。我懷疑區(qū)別在于節(jié)點將字符串存儲為base64字符串中的字節(jié),而go將字符串存儲為ascii / utf8字符串中表示為base64的字節(jié)。但是還沒有弄清楚節(jié)點如何做!我略過go源進(jìn)行編碼,然后嘗試找到Buffer的Node源,但是經(jīng)過一會兒的搜索后,決定在這里發(fā)布可能會更快,希望有人能立即獲得答案。
1 回答

函數(shù)式編程
TA貢獻(xiàn)1807條經(jīng)驗 獲得超9個贊
此構(gòu)造函數(shù):
new Buffer('test', 'base64')
test使用base64編碼對輸入字符串進(jìn)行解碼。它不對test使用base64進(jìn)行編碼。請參閱參考資料:
new Buffer(string[, encoding])
string 要編碼的字符串。
encoding 的編碼string。默認(rèn)值: 'utf8'。
等效的Go代碼為:
data, err := base64.StdEncoding.DecodeString("test")
if err != nil {
panic(err)
}
fmt.Printf("% x", data)
哪些輸出(在Go Playground上嘗試):
b5 eb 2d
要在Node.js中進(jìn)行編碼,請使用(有關(guān)詳細(xì)信息,請參見如何在node.js中進(jìn)行Base64編碼?):
Buffer.from("test").toString('base64')
- 1 回答
- 0 關(guān)注
- 287 瀏覽
添加回答
舉報
0/150
提交
取消