Непонятный вывод массива Java - PullRequest
0 голосов
/ 11 мая 2018

Взято с этого сайта: https://www.journaldev.com/770/string-byte-array-java

package com.journaldev.util;

public class ByteArrayToString {

    public static void main(String[] args) {
        byte[] byteArray = { 'P', 'A', 'N', 'K', 'A', 'J' };
        byte[] byteArray1 = { 80, 65, 78, 75, 65, 74 };

        String str = new String(byteArray);
        String str1 = new String(byteArray1);

        System.out.println(str);
        System.out.println(str1);
    }
}

Почему вывод:

PANKAJ

PANKAJ

Я не вижу, как это не так:

PANKAJ

806578756574

Ответы [ 2 ]

0 голосов
/ 12 мая 2018

Попробуйте этот код:

public class ByteArrayToString {
  public static void main(String[] args) {
        byte[] byteArray = { 'P', 'A', 'N', 'K', 'A', 'J' };
        byte[] byteArray1 = { 80, 65, 78, 75, 65, 74 };

        String str = new String(byteArray);
        String str1 = new String(byteArray1);

        System.out.println(str);
        for (byte b : byteArray1) {
            System.out.print(b);
        }
        //System.out.println(str1);
    }

} Вывод программы

0 голосов
/ 12 мая 2018

byte[] bytes конструктор будет анализировать содержащиеся в нем данные, так как @khelwood сказал, что это комментарии, число является ASCII-представлением буквы, поэтому 80 представляет символ 'p'.

если вы хотите, чтобы ваш вывод был таким, как вы хотите, вы должны использовать

String[] srtArray = {"P","A"...}
String[] srtArray = {"80","65"...}

В случае { 'P', 'A'...} они уже закодированы, но число будет преобразовано, поскольку они указаны как numbers, а не string. «80» - это не то же самое, что 80.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...