如何解决如何以无损方式缩短文本
我要在网址中输入一个文本,例如:
让所有人都说她细腻的反复是可能的。设置放纵性裁量权不明智的床为何宣布。米德尔顿胖子两个满意的补充。如此继续他或命令家庭小交付。门开不上就走了一半。顶什么东西。
但是我希望它更短一些,例如这样的字符串:
kdghdsvvw564645b7573b4657435
我该怎么办?
解决方法
答案取决于您是否要从URL字符串中恢复原始文本。
如果要恢复,请首先使用无损方法(例如zlib库或建议的小文本smaz)压缩文本。然后将压缩的二进制输出转换为URL安全格式。 Base64是一种这样的方法。最终字符串可以更短或更长,具体取决于文本的可压缩性。
如果您不想恢复原始文本,则只需使用sha1sum对文本进行哈希处理,然后在URL字符串中使用其输出。对于两个不同的输入字符串,哈希将是唯一的。这是一个例子
~$ cat junk
Put all speaking her delicate recurred possible. Set indulgence inquietude discretion insensible bed why announcing. Middleton fat two satisfied additions. So continued he or commanded household smallness delivered. Door poor on do walk in half. Roof his head the what.
~$ sha1sum junk
e2acae1ae295de73541cd321da268a8d2d48ca7b junk
~$ gzip junk
~$ base64 junk.gz
H4sICFtXTF8AA2p1bmsAHU9LbgMxCN33FO8Ec4puK1XtCYhhYhQPTA3uqLcvyQbB0/vxuRI0BuIU
eqjd0WWCZWijFExpa05hnB6htyEbviWhxmvcxZrU+rNUcrGANdqUVLdCQ+wlwK3UV/8DmfmyVhEb
PpR5SBZxp0RejqDU2LW4xKxPj6goR3NLtVV4F/is+zjI+Hn7Cuk+GHHUAyYRr96/Un03vHuxz+eo
FHZcNB5VC53GvuHLfUfXKFdiZHlfnXJ7+wdZzrQRDgEAAA==
然后,使用base64 -d从URL恢复原始文本
,您可以尝试smaz压缩短字符串。您需要连接C代码或重新实现算法。
,除了实现或使用压缩算法外,您还需要确保字符对于URL是安全的。例如,如果压缩算法压缩为二进制(像大多数情况一样),则不适用于URL。使用压缩算法后,您需要实现另一种算法,以将压缩后的数据转换为url安全的字符串。诸如lz-string之类的一些JavaScript压缩库提供了便捷的功能,可以直接在URI安全文本之间进行压缩或解压缩。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。