特殊字符 - 字符串 - 二进制 - Java
Special characters - String - Binary - Java
我尝试将字符串转换为二进制并返回。它工作得很好,但是如果我在字符串中有一个特殊字符,比如 €,它会给我一个问号。我该如何解决这个问题?
这是我将字符串转换为二进制的代码:
// 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();
}
我用这个代码对每个 "block":
// binaryToChar
public static char binaryToChar(String block) {
int ascii = Integer.parseInt(block, 2);
return (char) ascii;
}
感谢您的帮助,抱歉我的英语不好 ;)
编辑:我在此列表中找到了 €:>>Klick<<
所以它是正确的, € 在二进制中显示为 10000000
,但在重新转换为 String/char.
后它不是这样显示的
哇,我可以回答我自己的问题了: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();
}
感谢所有考虑过我的问题的人:)
我尝试将字符串转换为二进制并返回。它工作得很好,但是如果我在字符串中有一个特殊字符,比如 €,它会给我一个问号。我该如何解决这个问题?
这是我将字符串转换为二进制的代码:
// 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();
}
我用这个代码对每个 "block":
// binaryToChar
public static char binaryToChar(String block) {
int ascii = Integer.parseInt(block, 2);
return (char) ascii;
}
感谢您的帮助,抱歉我的英语不好 ;)
编辑:我在此列表中找到了 €:>>Klick<<
所以它是正确的, € 在二进制中显示为 10000000
,但在重新转换为 String/char.
哇,我可以回答我自己的问题了: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();
}
感谢所有考虑过我的问题的人:)