我有这个编码为Base64字符串的String:
{ "appId": "70cce8adb93c4c968a7b1483f2edf5c1", "apiKey": "a65d8f147fa741b0a6d7fc43e18363c9", "entityType": "Todo", "entityId": "2-0", "blobName": "picture" } 输出是:
ewogICJhcHBJZCI6ICI3MGNjZThhZGI5M2M0Yzk2OGE3YjE0ODNmMmVkZjVjMSIsCiAgImFwaUtleSI6ICJhNjVkOGYxNDdmYTc0MWIwYTZkN2ZjNDNlMTgzNjNjOSIsCiAgImVudGl0eVR5cGUiOiAiVG9kbyIsCiAgImVudGl0eUlkIjogIjItMCIsCiAgImJsb2JOYW1lIjogInBpY3R1cmUiCn0= 在这种情况下,这是很长的。我不能在我的这种情况下使用单向散列,因为它需要在另一端解码。
与Base64编码相比,是否存在只有1/4大小的编码?
Base64编码将二进制数据编码为64位字母表中的字符。这需要增加33.3%的规模; 即3个字节变为4个字符。 减少到Base64大小的1/4意味着传输的形式必须小于原始形式的数据。只有在原始数据具有高度可压缩性的情况下才能实现这一点。您需要执行以下操作:
通过压缩原始字节序列超过 4倍。 将二进制文件应用于文本编码。 鉴于第一步仅适用于可压缩数据,并且许多数据格式(例如图像,视频,声音,ZIP文件)已经被压缩,因此在一般情况下您的问题的答案是否定的。
对于您的具体示例,我认为答案是“可能没有”。JSON字符串中有相当多的冗余,但我怀疑通用压缩算法可以将其压缩4倍。更好的方法是设计一个紧凑的二进制表示:
将id和密钥编码为字节 将名称编码为ASCII或UTF-8字节序列+字节计数。 摆脱属性名称 摆脱其他JSON语法冗余。 然后Base64编码二进制表示。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。