Я хочу закодировать строку, используя как 7-битный, так и Unicode (UTF-8).
import java.nio.ByteBuffer;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
public class Example{
public static void main(String[] args) throws Exception{
String originalMessage = "*ABC";
sevenBitEncoding(originalMessage);
unicodeEncoding(originalMessage);
}
private static void sevenBitEncoding(String originalMessage) {
char[] ch=originalMessage.toCharArray();
byte[] bytes = new String(ch).getBytes();
StringBuilder encodedMessage = new StringBuilder();
encodedMessage.append("[");
for(int i=0; i < bytes.length; i++) {
encodedMessage.append(bytes[i] + ",");
}
encodedMessage.replace(encodedMessage.length()-1, encodedMessage.length(), "]");
System.out.println("7-bit :" + encodedMessage.toString());
}
private static void unicodeEncoding(String originalMessage) {
byte[] bytes = originalMessage.getBytes(StandardCharsets.UTF_8);
// ByteBuffer byteBuffer = StandardCharsets.UTF_8.encode(originalMessage);
StringBuilder encodedMessage = new StringBuilder();
encodedMessage.append("[");
for(int i=0; i < bytes.length; i++) {
encodedMessage.append(bytes[i] + ",");
}
encodedMessage.replace(encodedMessage.length()-1, encodedMessage.length(), "]");
System.out.println("unicode:" + encodedMessage.toString());
}
}
Вывод:
7-bit :[65,66,67]
unicode:[65,66,67]
Ожидаемый вывод:
Поскольку UTF-8 использует основание 16, ожидаемое значение для UTF-8 составляет 2А.https://flaviocopes.com/unicode/
7-bit :[42,65,66,67]
unicode:[2A,41,42,43]
Есть ли способ достичь этого?