开发者社区> 问答> 正文

编码比Base64短

我有这个编码为Base64字符串的String:

{ "appId": "70cce8adb93c4c968a7b1483f2edf5c1", "apiKey": "a65d8f147fa741b0a6d7fc43e18363c9", "entityType": "Todo", "entityId": "2-0", "blobName": "picture" } 输出是:

ewogICJhcHBJZCI6ICI3MGNjZThhZGI5M2M0Yzk2OGE3YjE0ODNmMmVkZjVjMSIsCiAgImFwaUtleSI6ICJhNjVkOGYxNDdmYTc0MWIwYTZkN2ZjNDNlMTgzNjNjOSIsCiAgImVudGl0eVR5cGUiOiAiVG9kbyIsCiAgImVudGl0eUlkIjogIjItMCIsCiAgImJsb2JOYW1lIjogInBpY3R1cmUiCn0= 在这种情况下,这是很长的。我不能在我的这种情况下使用单向散列,因为它需要在另一端解码。

与Base64编码相比,是否存在只有1/4大小的编码?

展开
收起
小六码奴 2019-08-17 16:47:38 2846 0
1 条回答
写回答
取消 提交回答
  • Base64编码将二进制数据编码为64位字母表中的字符。这需要增加33.3%的规模; 即3个字节变为4个字符。 减少到Base64大小的1/4意味着传输的形式必须小于原始形式的数据。只有在原始数据具有高度可压缩性的情况下才能实现这一点。您需要执行以下操作:

    通过压缩原始字节序列超过 4倍。 将二进制文件应用于文本编码。 鉴于第一步仅适用于可压缩数据,并且许多数据格式(例如图像,视频,声音,ZIP文件)已经被压缩,因此在一般情况下您的问题的答案是否定的。

    对于您的具体示例,我认为答案是“可能没有”。JSON字符串中有相当多的冗余,但我怀疑通用压缩算法可以将其压缩4倍。更好的方法是设计一个紧凑的二进制表示:

    将id和密钥编码为字节 将名称编码为ASCII或UTF-8字节序列+字节计数。 摆脱属性名称 摆脱其他JSON语法冗余。 然后Base64编码二进制表示。

    2019-08-17 16:48:53
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载