我尝试将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后它不显示为。
答案 0 :(得分:0)
我稍微编辑了我的代码并尝试了一些事情,现在这很有效:
// 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();
}
感谢所有想到我的问题的人:)