Скажем, у меня есть String
. Если я это сделаю:
for (int index = 0; index < ch.length(); index++) {
char c = ch.charAt(index);
System.out.println(String.format("%04x", (int) c));
}
Каким будет выход?
Я попробовал и получил a
0061
, который, как представляется, /ASCII значение UTF-8. A
Затем я попробовал ?
и получил d800 dd51
который, кажется, не является значением UTF.
Просто интересно, что такое значение int Char
в Java.
Я считаю, что ваша переменная ch в вашем цикле for является типом String
и вы хотите получить доступ к каждому символу, а затем применить его к значению ascii? Хорошо, что делает ваш код. Я запускал его после внесения незначительных поправок и использовал String ch = "abcdef"
и он дал мне возможность:
0061
0062
0063
0064
0065
0066
Это именно то, что указано в инструкции для печати:
-cast символ с его значением "ascii"
-output значение длительностью четыре символа.
Если это помогает, значение ascii для a, b, c, d, e и f равно 61, 62, 63, 64, 65 и 66.
\u0000
Они ограничены значениями от\u0000
до\uffff
. Дополнительные символы должны быть представлены либо как суррогатная пара в последовательности символов, либо как целое число, в зависимости от API, с которым они используются.Char
- это один кодовый блок UTF-16 (не символ), аString
- это последовательность кодовых блоков UTF-16. В UTF-16 кодовые точки Unicode отU+0000
доU+FFFF
используют 1 кодовый блок, а кодовые точки отU+10000
доU+10FFFF
используют 2 кодовых блока, называемых суррогатной парой.