有没有人知道Base64解码算法是怎么回事,作为资料在互联网上有很多文章、杂志和书籍解释如何解码base64算法,但是解码Base64不是explained.So我的问题是如何解码Base4算法?
谢谢你,希望你的回答
发布于 2014-03-22 08:15:43
基本上,你一次只取一个字符,并将其转换为它所代表的位。因此,如果您找到一个A字符,它将转换为000000,而/字符将转换为111111。然后将这些比特连接起来。所以你得到了000000 | 111111。但是,这不适合一个字节,您必须拆分并移位结果,以获得00000011和1111xxxx,其中xxxx尚不为人所知
当然,在高性能实现中,您可能只能使用字节来做到这一点,因此每个字符有两个伪位(用空格与实际有意义的位分隔)。
((00 000000 << 2) & 11111100) | ((00 111111 >> 4) & 00000011) -> 00000011
((00 111111 << 4) & 11110000) | ???????? -> 1111xxxx
...首先,使用移位运算符<<将位放在适当的位置。然后使用二进制AND运算符&挑选出需要的位,然后使用二进制OR |运算符将两个字符的位组合在一起。
现在,在4个字符之后,你将有3个完整的字节。然而,您的结果可能不是3的倍数。在这种情况下,您可以使用两个或三个字符,后面可能跟有填充(=)。一个字符是不可能的,因为这意味着只设置了最高位的不完整字节。在这种情况下,您只需忽略由最后一个字符编码的最后一个伪比特。
就我个人而言,我喜欢使用状态机进行解码。我已经在Java中创建了两个使用状态机的base64流。只有在有4个字符(3个完整的字节)时才进行解码,直到达到base64编码的末尾,这可能很有用。
发布于 2014-03-20 14:54:54
看看这个网站:http://www.base64decode.org他们有一个转换表
https://stackoverflow.com/questions/22525413
复制相似问题