2016-02-16 3 views
0

Я пытаюсь преобразовать байт-массив в строку со следующим фрагментом кода. Но по некоторым причинам, когда я преобразовать байт [] в строку, она изменяет некоторое содержание в в файлеПреобразование данных из массива байтов в String

Код

public String convertToString(byte[] byteArr) 
    { 
    public static final int BYTE_MASK = 0xFF; 
    StringBuilder strBldr = new StringBuilder(); 

    for(int i = 0; i < byteArr.length; i++) { 
     strBldr.append((char) (byteArr[i] & BYTE_MASK)); 
    } 

    return strBldr.toString(); 
    } 

Я добавил данные двух файлов, называемых ожидалось файлов и сгенерированных файл

Ожидаемую Файл:

00 39 00 00 46 91 00 00 00 17 16 02 16 16 39 31 
0b 00 3a 00 78 09 60 40 26 64 50 41 50 20 48 49 
47 20 52 4d 20 20 04 00 80 4b 02 00 a0 ea 01 00 
64 00 ec 05 00 00 00 00 00 

сгенерированного файла:

00 39 00 00 46 3f 00 00 00 17 16 02 16 16 39 31 
0b 00 3a 00 78 09 60 40 26 64 50 41 50 20 48 49 
47 20 52 4d 20 20 04 00 3f 4b 02 00 a0 ea 01 00 
64 00 ec 05 00 00 00 00 00 

если вы видите оба файла, то ожидаемые данные файла должно быть «91» (первый ряд, шестой элемент) и его 3f в созданном файле.

Любая идея, как получить правильный результат?

+2

пробовал: новый String (byteArr); ? – Stultuske

+1

Как вы преобразовываете байты обратно в байт []? – Ferrybig

+0

Возможный дубликат [Java Byte Array to String to Byte Array] (http://stackoverflow.com/questions/6684665/java-byte-array-to-string-to-byte-array) – SomeJavaGuy

ответ

0

попробовать это:

 String example = "This is an example"; 
     byte[] bytes = example.getBytes(); 
     System.out.println("Text : " + example); 

     String s = new String(bytes); 
     System.out.println("String : " + s); 

выход:

Текст: [B @ 187aeca

Строка: Это пример

+1

Вы попробовали это с данными, представленными в вопросе? – Thilo

Смежные вопросы