第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

在 Golang 中將文件編碼為 base64 時丟失一個字節(jié)

在 Golang 中將文件編碼為 base64 時丟失一個字節(jié)

Go
繁華開滿天機 2022-12-26 16:26:41
package mainimport (    "bytes"    "encoding/base64"    "fmt"    "io"    "log"    "os")func b(name string) {    f, err := os.Open(name)    if err != nil {        log.Fatal(err)    }    defer f.Close()    buf := new(bytes.Buffer)    binval := base64.NewEncoder(base64.StdEncoding, buf)    if _, err := io.Copy(binval, f); err != nil {        log.Fatal(err)    }    fmt.Printf("%s\n", buf.String()[buf.Len()-5:])}func main() {    b("soccer.jpg")    b("soccer2.jpg")}足球.jpg 足球 2.jpg輸出:bodqhrohro@debian:/tmp$ go run base64.go nuNf/nuNf/第一個文件與第二個文件相同,只是刪除了最后一個字節(jié)。它們產(chǎn)生相同的 base64 字符串。怎么了?我用go1.15.9和go1.18.3體驗過。
查看完整描述

1 回答

?
炎炎設(shè)計

TA貢獻1808條經(jīng)驗 獲得超4個贊

來自base64.NewEncoder 文檔

調(diào)用者必須關(guān)閉返回的編碼器以刷新任何部分寫入的塊。

所以:

binval.Close() // <- add this
fmt.Printf("%s\n", buf.String()[buf.Len()-5:])

另請參閱文檔示例


// Must close the encoder when finished to flush any partial blocks.

// If you comment out the following line, the last partial block "r"

// won't be encoded.

encoder.Close()


查看完整回答
反對 回復(fù) 2022-12-26
  • 1 回答
  • 0 關(guān)注
  • 111 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號