2013-11-07 3 views
-2

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

String stringValue="33321232"; //the bytes in String 
byte[] bytes= (byte[])stringValue; 
System.out.println(getByteArrayAsString(bytes)); 

Метод getByteArrayAsString должен вернуть Строка результата: 33321232, поэтому тот же, который является stringValue. (Это мой метод, это работает, но как получить bytes?)

Спасибо!

+2

'байт [] java.lang.String.getBytes()' (пс: Я не уверен, что вы даже искали в Интернете, потому что это довольно легко найти: Google «ява строку в массив байтов»). – sp00m

+1

Обнаружено это в stackoverflow daark

+1

Кроме того, чтобы узнать ответы, которые расскажут вам, как это сделать правильно, вы должны узнать о Кастинг. Кастинг не может помочь с такой проблемой. Используйте его осторожно, и только тогда, когда эфект заполнен. – Zane

ответ

1

попробуйте позвонить GetBytes(), как таким образом

String stringValue="33321232"; //the bytes in String 
bytes[] b=stringValue.getBytes(); 

Для получения дополнительной информации ознакомьтесь oracle docs

-1

Попробуйте

String result = new String(bytes); 
System.out.println(result); 
4

У меня есть строка, которая содержит строку байте массива стоимость.

Это непонятно для начала. Если вы преобразовали двоичные данные в текст, как вы это сделали? Это должно помочь вам перевести назад. Например, если вы начали с произвольных двоичных данных (например, изображения в некоторой форме), то обычно вам нужно преобразовать в строку с использованием base64 или hex. Если вы начали с текст данных, это другое дело.

Строка не является байтовой матрицей, поэтому литье не выполняется. Для данных, которые являются фундаментальным текстом, необходимо преобразовать между двоичным и текстовым, применяя кодировку (также известную несколько смутно как кодировку на Java).

Другие ответы предложили использовать new String(byte[]) и String.getBytes(). Я бы настоятельно рекомендовал против использования этих членов - использовать те, которые определяют кодировку вместо:

new String(byte[], String) // the string argument is the charset 
new String(byte[], Charset) 

String.getBytes(String) // the string argument is the charset 
String.getBytes(Charset) 

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

Использование Charset для указания кодировки более чистое, чем просто использование строки - стоит знать StandardCharsets, если вы используете Java 7, например.

byte[] bytes = stringValue.getBytes(StandardCharsets.UTF_8); 
System.out.println(new String(bytes, StandardCharsets.UTF_8); 
Смежные вопросы