我有一個長的,但它太長了,我怎么能把它隱蔽到一個短的。我希望這是一個可逆的操作,因為我想從短操作中獲得長操作。順便說一句,我不想將這兩個字符串保存到數據庫中。stringBase64
2 回答

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

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