如何将长字符串转换为短字符串,并且是可逆操作

我有一个长的,但它太长了,我怎么能把它隐蔽到一个短的。我希望这是一个可逆的操作,因为我想从短操作中获得长操作。顺便说一句,我不想将这两个字符串保存到数据库中。stringBase64



Helenr
浏览 528回答 2
2回答

慕的地6264312

由于&nbsp;Pigeonhole 原理,将任意长字符串转换为任意短字符串通常是不可能的:可逆性意味着转换共域(小字符串)需要至少具有与转换域(大字符串)一样多的元素,存在比不同的短字符串更多的不同长字符串。作为整数的类比,请考虑不可能将3位数字(900种可能性)转换为2位数字(90种可能性)并且仍然是可逆的,因为90<900。但是,如果长字符串是可预测的并且具有大量冗余,则可以尝试应用像gzip这样的无损压缩算法,以便在常见情况下缩短它。

HUX布斯

Base64编码和解码确实是可逆操作。解码后的字符串较短,因此在某些情况下传输和存储可能更便宜(并非总是YMMV)。标准库中的 base64 包具有轻松将“长”Base64 编码字符串解码为原始解码字符串所需的一切,大约缩短了 25%:decoded, err := base64.StdEncoding.DecodeString(encoded)if err != nil {&nbsp; &nbsp; fmt.Println("error:", err)}您可以在游乐场尝试:仅解码编码然后解码请注意,Base64格式存在多种变体,因此您需要确切知道使用哪种变体进行编码,并使用相同的变体进行解码。 是变体 RFC 4648。base64.StdEncoding
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go