Там нет беззнаковых типов в Java, так что ваш массив должен содержать регулярные char
значения. Тем не менее, числовые литералы по умолчанию имеют тип int
, поэтому вам может потребоваться указать ваши значения в char
, например: (char)0x41
. То же самое относится к значениям byte
(используйте тот или иной вариант в зависимости от того, являются ли ваши номера знаками ASCII или Unicode BMP). Вы также можете использовать escape-код unicode, например String str = "\u0041\u0042";
. Чтобы получить байтовое представление строки ASCII (или иначе закодированной) (противоположная операция), используйте синтаксис, например: String charArray = "abcd".getBytes("UTF-8");
.
Также обратите внимание на различие между байтами и символами. Символ хорошо определен стандартом Unicode и всегда имеет то же значение. Значение байта зависит от используемой кодировки символов, поэтому вы не можете просто сделать строку из байтов. Если вы используете конструктор String(byte[])
, вы используете неявное кодирование своей платформы - это может быть опасно в некоторых ситуациях. String(char[])
с другой стороны является безопасным (но если вы генерируете значения char
, отличая шестнадцатеричные числа до char
, вы де-факто вручную конвертируете из ASCII).
Спасибо, это именно то, что я искал! – user1019710