Java: преобразование байтовой строки в байтовый массив - PullRequest
0 голосов
/ 10 ноября 2018

Я хочу преобразовать byte[] в String, а затем преобразовать String в byte[].

Итак,

byte[] b = myFunction();
String bstring = b.toString();
/* Here the methode to convert the bstring to byte[], and call it ser */
String deser = new String(ser);

bstring дает мне [B@74e752bb.

А затем преобразовать String в byte[]. Я не использую его в этом порядке, но это пример.

Как мне сделать это на Java?

С уважением,

Стейн

Ответы [ 3 ]

0 голосов
/ 10 ноября 2018

Я не эксперт, но вы должны попробовать методы, предоставляемые классом "Byte" и, при необходимости, некоторые циклы. Попробуйте byte b = Byte.parseByte(String s) преобразовать строку в байт и String s = Byte.toString(byte b) преобразовать байт в строку. Надеюсь, это поможет:).

0 голосов
/ 10 ноября 2018

Вы можете сделать это так,

String string = "Your String";
byte[] bytesFromString = string.getBytes(); // get bytes from a String
String StringFromByteArray = new String(bytesFromString); // get the String from a byte array 
0 голосов
/ 10 ноября 2018

При преобразовании байта [] в строку, вы должны использовать это,

new String(b, "UTF-8");

вместо

b.toString();

Когда вы конвертируете байтовый массив в строку, вы всегда должны указывать кодировку символов и использовать ту же кодировку при конвертации обратно в байтовый массив из строки. Лучше всего использовать кодировку UTF-8, поскольку это достаточно мощная и компактная кодировка, которая может представлять более миллиона символов. Если вы не укажете кодировку символов, то может использоваться кодировка платформы по умолчанию, которая может не в состоянии правильно представить все символы при преобразовании из байтового массива в строку.

Ваш метод при правильном обращении должен быть написан примерно так:

    public static void main(String args[]) throws Exception {
        byte[] b = myFunction();
//      String bstring = b.toString(); // don't do this
        String bstring = new String(b, "UTF-8");
        byte[] ser = bstring.getBytes("UTF-8");
        /* Here the methode to convert the bstring to byte[], and call it ser */
        String deser = new String(ser, "UTF-8");
    }
...