Base64到使用Java进行二进制转换

时间:2013-04-04 04:32:20

标签: java binary base64

我已经查看了我发布的问题的回复,但我无法弄明白。我真的很感激,如果有人能够对此表达一点意见:

我试图将base64字符串转换为二进制。我遇到了以下代码,我将base64字符串存储在一个字节数组中。如何将字节数组转换为二进制数组。 我找到的代码:

import org.apache.commons.codec.binary.Base64;

import java.util.Arrays;

public class Base64Decode {
    public static void main(String[] args) {
           String hello = "AAADccwwCBwOAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAB==";

           byte[] decoded = Base64.decodeBase64(hello.getBytes());

           System.out.println(Arrays.toString(decoded));

          }
}

输出:

  

[0,0,3,113,-52,48,8,28,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0

输出是否正确?当我查找一些base64转换的文档时,我注意到“A”的等价值是0.如何在最后一个槽中数组为零?它不会具有“B”的等价物。我的数组不应该以三个0开头吗?如何将其转换为二进制(以0s'和1s'表示)?

1 个答案:

答案 0 :(得分:4)

在base 64中,每个字符代表6位信息。 四字符序列表示24位信息(即3字节)。

然后,序列AAAD代表{0,0,3}

   AAAD -> 000000 000000 000000 000011 -> 00000000 00000000 00000011

最后一个序列AAB=,其中最后的=是填充字符,表示 16位值(实际上有18位,但最后两位)被忽略),相当于{0, 0}

   AAB= -> 000000 000000 000001 -> 00000000 00000000 (ignored: 01)

如果最后一个序列为AB==,则表示 8位值,相当于{0}

   AB== -> 000000 000001 -> 00000000 (ignored: 0001)