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

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

如何將長字符串轉換為短字符串,并且是可逆操作

如何將長字符串轉換為短字符串,并且是可逆操作

Go
Helenr 2022-09-19 14:48:36
我有一個長的,但它太長了,我怎么能把它隱蔽到一個短的。我希望這是一個可逆的操作,因為我想從短操作中獲得長操作。順便說一句,我不想將這兩個字符串保存到數據庫中。stringBase64
查看完整描述

2 回答

?
慕的地6264312

TA貢獻1817條經驗 獲得超6個贊

由于 Pigeonhole 原理,將任意長字符串轉換為任意短字符串通常是不可能的:

  • 可逆性意味著轉換共域(小字符串)需要至少具有與轉換域(大字符串)一樣多的元素,

  • 存在比不同的短字符串更多的不同長字符串。

作為整數的類比,請考慮不可能將3位數字(900種可能性)轉換為2位數字(90種可能性)并且仍然是可逆的,因為90<900。

但是,如果長字符串是可預測的并且具有大量冗余,則可以嘗試應用像gzip這樣的無損壓縮算法,以便在常見情況下縮短它。


查看完整回答
反對 回復 2022-09-19
?
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


查看完整回答
反對 回復 2022-09-19
  • 2 回答
  • 0 關注
  • 634 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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