Подтвердить что ты не робот

Преобразование байт в строку в Java

Я использую ниже код для преобразования байта в строку:

System.out.println("string " + Byte.toString((byte)0x63));

Почему он печатает "string 99". Как изменить, чтобы он печатал строку "c"?

4b9b3361

Ответ 1

Строка ctor подходит для этого преобразования:

System.out.println("string " + new String(new byte[] {0x63}));

Ответ 2

System.out.println(new String(new byte[]{ (byte)0x63 }, "US-ASCII"));

Обратите внимание, что преобразование байтов в строки всегда связано с кодировкой. Если вы не укажете его, вы будете использовать стандартную кодировку платформы, а это значит, что код может сломаться при работе в разных средах.

Ответ 3

Используйте char вместо байта:

System.out.println("string " + (char)0x63);

Или, если вы хотите быть пуританским Unicode, вы используете codepoints:

System.out.println("string " + new String(new int[]{ 0x63 }, 0, 1));

И если вам нравится старая версия US-ASCII "каждый байт - символ":

System.out.println("string " + new String(new byte[]{ (byte)0x63 },
                                          StandardCharsets.US_ASCII));

Избегайте использования конструктора String(byte[]), рекомендованного в других ответах; он полагается на кодировку по умолчанию. Обстоятельства могут возникать там, где 0x63 фактически не является символом c.

Ответ 4

Вы можете использовать printf:

System.out.printf("string %c\n", 0x63);

Вы также можете создать строку с таким форматированием, используя String#format:

String s = String.format("string %c", 0x63);

Ответ 5

вы можете использовать

символ , эквивалентный 0x63, равен 'c', но эквивалентный ему байт составляет 99

System.out.println("byte "+(char)0x63); 

Ответ 6

Вам нужно построить новую строку из массива байтов. Первым элементом вашего byteArray должен быть 0x63. Если вы хотите добавить больше букв, сделайте byteArray дольше и добавьте их к следующим индексам.

byte[] byteArray = new byte[1];
byteArray[0] = 0x63;

try {
    System.out.println("string " + new String(byteArray, "US-ASCII"));
} catch (UnsupportedEncodingException e) {
    // TODO: Handle exception.
    e.printStackTrace();
}

Обратите внимание, что указание кодировки в конечном итоге вызовет UnsupportedEncodingException, и вы должны соответствующим образом обработать это.

Ответ 7

Если это один байт, просто введите byte в char, и он должен работать нормально, т.е. предоставить объект char, соответствующий значению кодового слова данного байта. Если нет, используйте конструктор String, как указано в другом месте.

char ch = (char)0x63;
System.out.println(ch);

Ответ 8

String str = "0x63";
int temp = Integer.parseInt(str.substring(2, 4), 16);
char c = (char)temp;
System.out.print(c);