【问题标题】:Convert Base64 to Binary String in Java在 Java 中将 Base64 转换为二进制字符串
【发布时间】:2015-01-02 22:18:14
【问题描述】:

我有以下 3 字节编码的 Base64 字符串。

    String base64_str = "MDQw";
    System.out.println("base64:" + base64_str);
    String hex = DatatypeConverter.printHexBinary(DatatypeConverter.parseBase64Binary(base64_str));

    for (int i = 0; i < hex.length(); i+=6) {
        String bytes = hex.substring(i, i+6);

        System.out.println("hex: " + bytes);

        StringBuilder binary = new StringBuilder();

        int byte3_int = Integer.parseInt(bytes.substring(4, 6), 16);
        String byte3_str = Integer.toBinaryString(byte3_int);
        byte3_int = Integer.valueOf(byte3_str);
        binary.append(String.format("%08d", byte3_int));

        int byte2_int = Integer.parseInt(bytes.substring(2, 4), 16);
        String byte2_str = Integer.toBinaryString(byte2_int);
        byte2_int = Integer.valueOf(byte2_str);
        binary.append(String.format("%08d", byte2_int));

        int byte1_int = Integer.parseInt(bytes.substring(0, 2), 16);
        String byte1_str = Integer.toBinaryString(byte1_int);
        byte1_int = Integer.valueOf(byte1_str);
        binary.append(String.format("%08d", byte1_int));

        System.out.println("binary: " + binary);
    }
}

我的输出是:

base64:MDQw
hex: 303430
binary: 001100000011010000110000

上面的输出是正确的,但是有没有更有效的方法将base64字符串转换为二进制字符串?

提前致谢。

【问题讨论】:

    标签: java string binary hex base64


    【解决方案1】:

    这是执行操作的小代码。唯一的缺陷是使用 replace 填充 0。

    import javax.xml.bind.DatatypeConverter;
    import java.io.UnsupportedEncodingException;
    
    public class main {
    
        public static void main(String [] args) throws UnsupportedEncodingException {
            String base64_str = "MDQw";
            byte[] decode = DatatypeConverter.parseBase64Binary(base64_str);
    
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < decode.length; i++){
                String temp = Integer.toBinaryString(decode[i]);
                sb.append(String.format("%8s", temp).replace(" ", "0"));
            }
    
            System.out.println(sb.toString());
        }
    }
    

    【讨论】:

      【解决方案2】:

      您可以使用 BigInteger (import java.math.BigInteger;) 将 base64 字符串转换为二进制字符串。

      byte[] decode = Base64.getDecoder().decode(base64_str);
      String binaryStr = new BigInteger(1, decode).toString(2);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-09-01
        • 2010-11-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-10
        • 2015-06-21
        • 2014-10-24
        相关资源
        最近更新 更多