Как преобразовать байтовый массив в строку и наоборот? - PullRequest
211 голосов
/ 08 октября 2009

Я должен преобразовать байтовый массив в строку в Android, но мой байтовый массив содержит отрицательные значения.

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

Что я могу сделать, чтобы получить правильное преобразование? Код, который я использую для преобразования, выглядит следующим образом:

// Code to convert byte arr to str:
byte[] by_original = {0,1,-2,3,-4,-5,6};
String str1 = new String(by_original);
System.out.println("str1 >> "+str1);

// Code to convert str to byte arr:
byte[] by_new = str1.getBytes();
for(int i=0;i<by_new.length;i++) 
System.out.println("by1["+i+"] >> "+str1);

Я застрял в этой проблеме.

Ответы [ 23 ]

0 голосов
/ 06 декабря 2016

Считайте байты из String, используя ByteArrayInputStream, и оберните его с BufferedReader, который является Char Stream вместо Byte Stream, который преобразует байтовые данные в строку.

package com.cs.sajal;

import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;

public class TestCls {

    public static void main(String[] args) {

        String s=new String("Sajal is  a good boy");

        try
        {
        ByteArrayInputStream bis;
        bis=new ByteArrayInputStream(s.getBytes("UTF-8"));

        BufferedReader br=new BufferedReader(new InputStreamReader(bis));
        System.out.println(br.readLine());

        }
        catch(Exception e)
        {
            e.printStackTrace();
        }

    }
}

Вывод:

Саджал хороший мальчик

0 голосов
/ 08 октября 2009

Попробуйте указать 8-битную кодировку в обоих преобразованиях. ISO-8859-1, например.

0 голосов
/ 21 июля 2015
public class byteString {

    /**
     * @param args
     */
    public static void main(String[] args) throws Exception {
        // TODO Auto-generated method stub
        String msg = "Hello";
        byte[] buff = new byte[1024];
        buff = msg.getBytes("UTF-8");
        System.out.println(buff);
        String m = new String(buff);
        System.out.println(m);


    }

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