У меня после многого устранения неполадок удалось получить кодер и декодер, где я вводил число, он превращает его в двоичный, а затем ASCII, возвращает это , Я передаю это в другое, он превращает ASCII в двоичную, а затем строки, которые относятся к числу. Это работает для всех чисел, которые не выглядят как 11xx xxxx, поскольку они превращаются в 10xx xxxx.Проблемы с getBytes, если крайний левый бит равен 1, следующий бит всегда 0
кодировщик:
public static String convert(int number) {
String binary = Integer.toBinaryString(number);
String string = "";
byte[] bytes = new byte[4];
while (binary.length() < 32) {
binary = "0" + binary;
}
for (int i = 0; i < bytes.length; i++) {
string += (char) Integer.parseInt(binary.substring(i * 8, (i + 1) * 8), 2);
}
return string;
}
Decoder:
public static int convert(String message) {
byte[] bytes = new byte[message.length()];
try {
for (int i = 0; i < message.length(); i++) {
bytes[i] = (message.substring(i, i + 1).getBytes("UTF-8"[message.substring(i, i + 1).getBytes("UTF-8").length - 1]);
}
StringBuilder binary = new StringBuilder(32);
String s;
for (int i = 0; i < bytes.length; i++) {
s = Integer.toBinaryString(bytes[i] & 0xFF);
while (s.length() < 8)
s = "0" + s;
binary.append(s);
}
int result = 0;
result = Integer.parseInt(binary.toString(), 2);
return result;
} catch (UnsupportedEncodingException e) {
return -1;
}
}