【问题标题】:String with binary numbers to String Base64 - JAVA带有二进制数的字符串到字符串 Base64 - JAVA
【发布时间】:2016-10-30 16:38:41
【问题描述】:

我正在尝试将带有字符的字符串转换为 base64 中的另一个字符串。但是,不幸的是我还没有这样做。

所以得到了这个字符串:11000110 01111111 10011100 10010111 00111101 11001011 01101011 11000110 01010110 10101001 11101010 01111010 10011110 00100001

它应该变成:xn+clz3La8ZWqep6niE=

要从 String Base64 转换为二进制字符串,我使用以下代码:

public static void main(String[] args)
{
    String s = new String("xlactz3Ja8Z/qep6niE=");

    System.out.println("String: " + s);

    byte[] b = Base64.getDecoder().decode(s);
    String res = "";
    String aux = new String();
    for(byte a : b)
    {
        aux = Integer.toBinaryString(255 & a);

        // If length is less than 8, than add "0"
        if (aux.length() != 8) {
            aux = padronize (aux);
        }

        res = res + aux + " ";
}


// Padronize all Substrings to have length 8
private static String padronize (String str) {
    String aux = "";

    // Create a auxiliar string to padronize
    for (int i = 0; i < 8 - str.length(); i++) {
        aux += "0";
    }

    return aux + str;
}

【问题讨论】:

  • 能否也发布“padronize”方法代码?
  • 我编辑了我的帖子并添加了 padronize 方法。谢谢
  • 您从 String Base64 转换为二进制字符串的代码是正确的,可能是 main 方法中缺少右括号。我在答案中发布了您要查找的代码。

标签: java arrays string


【解决方案1】:

要将base64字符串转换为二进制字符串,你的代码是对的,我是这样写的:

public static String fromBase64ToBinaryString(String base64String){
        byte[] b = Base64.getDecoder().decode(base64String);
        String []result = new String[b.length];
        for (int i=0;i<b.length;i++){
            result[i] = String.format("%8s", Integer.toBinaryString(b[i] & 0xFF)).replace(' ', '0');
        }
        return String.join(" ", result);
    }

要将二进制字符串转换为 base64 字符串,您可以使用以下代码:

public static String fromBinaryStringToBase64(String binary) {
        String[] split = binary.split(" ");
        byte[] arrayBinary = new byte[split.length];
        for(int i=0;i<split.length;i++){
            arrayBinary[i] = (byte)Integer.parseInt(split[i],2);
        }
        return Base64.getEncoder().encodeToString(arrayBinary);     
    }

这里是调用这两个方法的示例代码:

String s = "xn+clz3La8ZWqep6niE=";
String fromBase64ToBinaryString = fromBase64ToBinaryString( s);
System.out.println(fromBase64ToBinaryString);

String binary = "11000110 01111111 10011100 10010111 00111101 11001011 01101011 11000110 01010110 10101001 11101010 01111010 10011110 00100001";
String fromBinaryStringToBase64 = fromBinaryStringToBase64(binary);
System.out.println(fromBinaryStringToBase64);

【讨论】:

    猜你喜欢
    • 2014-04-28
    • 1970-01-01
    • 1970-01-01
    • 2015-11-21
    • 2016-02-26
    • 1970-01-01
    • 2016-07-25
    • 1970-01-01
    • 2015-01-02
    相关资源
    最近更新 更多