我的项目需要将阿拉伯语文本转换为二进制,然后将二进制转换为文本(反向过程)。我使用了这段代码,但我注意到当我使用 utf-16 将字符串转换为二进制时,然后读取此二进制以将其转换回原始 UTF-16 字符串会给我不同的字符
例如:编码中使用的阿拉伯字符是 (ن),它通过 utf-16lE 转换为二进制 (0100011000000110)
现在,当我想将这些二进制位(0100011000000110)转换为原始 utf-16 字符串时,会给我不同的字符是 F。
如果字符串是阿拉伯字符和 utf-16 编码,就会出现这些问题。我该如何解决这个问题..?
// Convert the text to binary
public static String getBinaryFromText(String secretText) {
byte[] bytes = secretText.getBytes(StandardCharsets.UTF_16LE);
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;
}
}
return binary.toString();
}
// Convert the binary to text.
public static String getTextFromBinary(String binaryString) {
String binary = binaryString.replace(" ", "");
String binaryPer8Bits;
byte[] byteData;
byteData = new byte[binary.length() / 8];
for (int i = 0; i < binary.length() / 8; i++) {
// To divide the string into 8 characters
binaryPer8Bits = binary.substring(i * 8, (i + 1) * 8);
// The integer of decimal string of binary numbers
Integer integer = Integer.parseInt(binaryPer8Bits, 2);
// The casting to a byte type variable
byteData[i] = integer.byteValue();
}
return new String(byteData);
}