特殊字符 - 字符串 - 二进制 - Java

时间:2016-02-03 18:31:10

标签: string binary special-characters

我尝试将String转换为二进制并返回。它工作得非常好,但是如果我在字符串中有一个特殊的字符,比如€,它会给我一个问号。我该如何解决这个问题?

这是我将String转换为二进制的代码:

// stringToBinary
public static String stringToBinary(String message) {
    byte[] bytes = message.getBytes();
    StringBuilder binary = new StringBuilder();
    for (byte b : bytes) {
        int val = b;
        for (int i = 0; i < 8; i++) {
            binary.append((val & 128) == 0 ? 0 : 1);
            val <<= 1;
        }
        binary.append(' ');
    }
    return binary.toString();
}

我使用此代码以相反的方式执行每个“块”:

// binaryToChar
public static char binaryToChar(String block) {
    int ascii = Integer.parseInt(block, 2);
    return (char) ascii;
}

感谢您的帮助,抱歉我的英语不好;)

编辑:我在此列表中找到了€:>>Klick<< 所以它是正确的,€在二进制文件中显示为10000000,但在重新转换为String / char后它不显示为。

1 个答案:

答案 0 :(得分:0)

哇,我可以回答我自己的问题:O

我稍微编辑了我的代码并尝试了一些事情,现在这很有效:

// stringToBinary
public static String stringToBinary(String message) {
    StringBuilder binary = new StringBuilder();
    for (char c : message.toCharArray()) {
        int i = (int) c;
        binary.append(Integer.toBinaryString(i));
        binary.append(' ');
    }
    return binary.toString();
}

感谢所有想到我的问题的人:)