簡體   English   中英

字符串,帶二進制數字到字符串Base64 - JAVA

[英]String with binary numbers to String Base64 - JAVA

我正在嘗試將帶有字符的字符串轉換為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;
}

要從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);
    }

要從二進制String轉換為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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM