问题描述
你需要实现一个 Base32 的编码和解码函数。
相比于 Base32,你可能更熟悉 Base64,Base64 是非常常见的用字符串形式表示二进制数据的方式,在邮件附件、Web 中的图片中都有广泛的应用。
Base32 是 Base64 的变种,与 Base64 不同的地方在于 Base64 以 6 bit 为一组作为索引,而 Base32 以 5 bit 为一组作为索引,每一组用一个 ASCII 字符表示。Base 64 总共需要 64 个字符表示,而 Base32 则只需要 32 个字符表示。
Base32 的编码流程如下:
- 对二进制数据进行预处理:如果二进制数据的 bit 数目不是 5 的倍数的话,在末尾补 0 直至为 5 的倍数。
- 以 5 bit 为一组进行分组。
- 将每一组的 5 bit 二进制转换为索引(0 - 31)。
- 在索引 - 字符转换表中查询索引对应的字符。
- 根据原始二进制数据的 bit 数目除以 40 后的余数,确定末尾需要补 的数目。
- 如果原始二进制数据 bit 数目除以 40 后的余数是 0 的话,不需要补 。
- 如果余数是 8,补 6 个 。
- 如果余数是 16,补 4 个 。
- 如果余数是 24,补 3 个 。
- 如果余数是 32,补 1 个 。
Base32 的索引 - 字符转换表如下:
索引:0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
字符:9 8 7 6 5 4 3 2 1 0 m n b v c x z a s d f g h j k l p o i u y t
你需要对字符串进行编码,并对进行解码。
测试样例
样例1:
输入:
输出:
样例2:
输入:
输出:
样例3:
输入:
输出:
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/25894.html