亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 GO 中得到錯誤的 Base64 編碼結果

在 GO 中得到錯誤的 Base64 編碼結果

Go
茅侃侃 2022-11-15 17:08:47
我有以下通過將 5 個值(由名稱、數字和日期字段組成)轉換為 TLV 創建的十六進制數據0115426f627320426173656d656e74205265636f726473020f3130303032353930363730303030330314323032322d30342d32355431353a33303a30305a040a323130303130302e393905093331353031352e3135此十六進制數據需要進一步編碼為 Base64。我為此寫了下面的代碼func TLVsToBase64(v string) string { // v - the TLV in hex format        encodedTLV := b64.StdEncoding.EncodeToString([]byte(v))    return encodedTLV}上述十六進制數據的輸出(錯誤)如下:MDExNTQyNmY2MjczMjA0MjYxNzM2NTZkNjU2ZTc0MjA1MjY1NjM2ZjcyNjQ3MzAyMGYzMTMwMzAzMDMyMzUzOTMwMzYzNzMwMzAzMDMwMzMwMzE0MzIzMDMyMzIyZDMwMzQyZDMyMzU1NDMxMzUzYTMzMzAzYTMwMzA1YTA0MGEzMjMxMzAzMDMxMzAzMDJlMzkzOTA1MDkzMzMxMzUzMDMxMzUyZTMxMzU=所需的輸出是:ARVCb2JzIEJhc2VtZW50IFJlY29yZHMCDzEwMDAyNTkwNjcwMDAwMwMUMjAyMi0wNC0yNVQxNTozMDowMFoECjIxMDAxMDAuOTkFCTMxNTAxNS4xNQ==我是 Go 新手,所以請幫我解決問題。我可能錯過了什么
查看完整描述

1 回答

?
森林海

TA貢獻2011條經驗 獲得超2個贊

您的輸入是某些數據的十六進制表示。并且您的預期輸出不是十六進制表示的 UTF-8 數據的 Base64 編碼,而是十六進制編碼表示的數據(字節),因此首先解碼字節,例如使用hex.DecodeString():


func TLVsToBase64(v string) (string, error) { // v - the TLV in hex format

    data, err := hex.DecodeString(v)

    if err != nil {

        return "", err

    }


    encodedTLV := base64.StdEncoding.EncodeToString(data)

    return encodedTLV, nil

}

測試它:


s := "0115426f627320426173656d656e74205265636f726473020f3130303032353930363730303030330314323032322d30342d32355431353a33303a30305a040a323130303130302e393905093331353031352e3135"

fmt.Println(TLVsToBase64(s))

輸出是你所期望的(在Go Playground上試試):


ARVCb2JzIEJhc2VtZW50IFJlY29yZHMCDzEwMDAyNTkwNjcwMDAwMwMUMjAyMi0wNC0yNVQxNTozMDowMFoECjIxMDAxMDAuOTkFCTMxNTAxNS4xNQ== <nil>



查看完整回答
反對 回復 2022-11-15
  • 1 回答
  • 0 關注
  • 171 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號