2 回答

TA貢獻(xiàn)1817條經(jīng)驗 獲得超6個贊
由于 Pigeonhole 原理,將任意長字符串轉(zhuǎn)換為任意短字符串通常是不可能的:
可逆性意味著轉(zhuǎn)換共域(小字符串)需要至少具有與轉(zhuǎn)換域(大字符串)一樣多的元素,
存在比不同的短字符串更多的不同長字符串。
作為整數(shù)的類比,請考慮不可能將3位數(shù)字(900種可能性)轉(zhuǎn)換為2位數(shù)字(90種可能性)并且仍然是可逆的,因為90<900。
但是,如果長字符串是可預(yù)測的并且具有大量冗余,則可以嘗試應(yīng)用像gzip這樣的無損壓縮算法,以便在常見情況下縮短它。

TA貢獻(xiàn)1876條經(jīng)驗 獲得超6個贊
Base64編碼和解碼確實是可逆操作。解碼后的字符串較短,因此在某些情況下傳輸和存儲可能更便宜(并非總是YMMV)。
標(biāo)準(zhǔn)庫中的 base64 包具有輕松將“長”Base64 編碼字符串解碼為原始解碼字符串所需的一切,大約縮短了 25%:
decoded, err := base64.StdEncoding.DecodeString(encoded)
if err != nil {
fmt.Println("error:", err)
}
您可以在游樂場嘗試:
請注意,Base64格式存在多種變體,因此您需要確切知道使用哪種變體進(jìn)行編碼,并使用相同的變體進(jìn)行解碼。 是變體 RFC 4648。base64.StdEncoding
- 2 回答
- 0 關(guān)注
- 647 瀏覽
添加回答
舉報