Java 将二进制字符串转换为字符

Java 将二进制字符串转换为字符,java,android,type-conversion,Java,Android,Type Conversion,我已经把一些字符转换成二进制。现在我想将它们转换回原始字符。谁能告诉我怎么做 这是我将字符转换为二进制的代码 string = Integer.toBinaryString(c); 其中c是字符类型。所以,当我把一个字符'a'转换成二进制时,我得到了类似这样的东西-1101101我不确定它在安卓系统中是否有效,但你试过简单强制转换吗 byte b = 90; //char Z char c = (char) b; 与基数=2(对于二进制)一起使用,将字符串转换为int,然后将int转换为字符

我已经把一些字符转换成二进制。现在我想将它们转换回原始字符。谁能告诉我怎么做

这是我将字符转换为二进制的代码

string = Integer.toBinaryString(c);

其中
c
是字符类型。所以,当我把一个字符
'a'
转换成二进制时,我得到了类似这样的东西-
1101101

我不确定它在安卓系统中是否有效,但你试过简单强制转换吗

byte b = 90; //char Z
char c = (char) b;
与基数=
2
(对于二进制)一起使用,将
字符串
转换为
int
,然后将
int
转换为
字符
,如下所示:

int parseInt = Integer.parseInt(your_binary_string, 2);
char c = (char)parseInt;

幸运的是,JavaAPI提供了一种相当简单的方法将二进制字节转换回原始字符

String char = (char)Integer.parseInt(string, 2)
该字符串是二进制代码的一个字节(8位)。2表示我们目前在2号基地。为了实现这一点,您需要将上述二进制代码块分成8位的部分

但是,函数Integer.tobinarysting(c)并不总是以8的形式返回。这意味着您需要确保原始输出都是8的倍数

结果会是这样的:

public String encrypt(String message) {
    //Creates array of all the characters in the message we want to convert to binary
    char[] characters = message.toCharArray();
    String returnString = "";
    String preProcessed = "";

    for(int i = 0; i < characters.length; i++) {
        //Converts the character to a binary string
        preProcessed = Integer.toBinaryString((int)characters[i]);
        //Adds enough zeros to the front of the string to make it a byte(length 8 bits)
        String zerosToAdd = "";
        if(preProcessed.length() < 8) {
            for(int j = 0; j < (8 - preProcessed.length()); j++) {
                zerosToAdd += "0";
            }
        }
        returnString += zerosToAdd + preProcessed;
    }

    //Returns a string with a length that is a multiple of 8
    return returnString;
}

//Converts a string message containing only 1s and 0s into ASCII plaintext
public String decrypt(String message) {
    //Check to make sure that the message is all 1s and 0s.
    for(int i = 0; i < message.length(); i++) {
        if(message.charAt(i) != '1' && message.charAt(i) != '0') {
            return null;
        }
    }

    //If the message does not have a length that is a multiple of 8, we can't decrypt it
    if(message.length() % 8 != 0) {
        return null;
    }

    //Splits the string into 8 bit segments with spaces in between
    String returnString = "";
    String decrypt = "";
    for(int i = 0; i < message.length() - 7; i += 8) {
        decrypt += message.substring(i, i + 8) + " ";
    }

    //Creates a string array with bytes that represent each of the characters in the message
    String[] bytes = decrypt.split(" ");
    for(int i = 0; i < bytes.length; i++) {
        /Decrypts each character and adds it to the string to get the original message
        returnString += (char)Integer.parseInt(bytes[i], 2);
    }

    return returnString;
}
公共字符串加密(字符串消息){
//创建消息中要转换为二进制的所有字符的数组
char[]characters=message.toCharArray();
字符串returnString=“”;
字符串预处理=”;
for(int i=0;i
下面的源代码对我很有用

StringBuilder binary;
创建一个类

public String stringToBinary(String str, boolean pad) {
    byte[] bytes = str.getBytes();
    binary = new StringBuilder();
    for (byte b : bytes)
    {
        binary.append(Integer.toBinaryString((int) b));
        if(pad) { binary.append(' '); }
    }
    System.out.println("String to Binary : "+binary);
    return binary.toString();
}
然后,调用

stringToBinary("a",true);
输出:

1000001

您是如何从字符生成二进制的?发布一些工作代码[1]: