我有一个16字节的数组,我将使用可用字符的自定义实现将其编码为基本的32位字符串表示形式
我可能遇到的问题是:
16个字节的数据是128位,并检查从编码字节数组到基数32会得到多少个字符:
128/5 = 25.6
我一直从16个字节的数组中获取26个字符,但是根据上面的计算,这是因为25.6舍入为26?编码中的字符数是否总是26个或25个?
谢谢
答案 0 :(得分:1)
将输入填充到块大小。 Base 32编码器的块大小为5位,但是为了保持字节对齐,您将需要以8的倍数进行处理,而最小公倍数是40。
因此,现在您有128位输入要在40位块中进行处理,并且不进行除法,因此必须四舍五入并用零位或其他常数填充最后一块。您还必须以某种方式向解码器发送信号,以指示所使用的填充位数,以便在解码时将其删除。
如果您看一下standard Base-64,您会发现通过以3为块处理输入,编码器可以保持字节对齐,并使用“ =”控制字符解决填充问题,该字符表示填充到解码器。
因此,使用128位,您会发现在对3个块进行编码之后,您还剩下8位,并且必须插入32位填充以完成最后的40位块。