2015-05-20 6 views
-3

У меня есть массив строк формы:Литые элементы массива строк массива байтов в Java

String[] s = {0x22, 0xD2, 0x01} 

Теперь я должен преобразовать его в байт форму массива, как:

byte[] bytes = {(byte)0x22, (byte)0xD2, (byte)0x01} 

Это может быть сделано в одной строке в C#, но как это сделать в Java, как я должен добавить bytes массив в другой массив того же типа и формата.

Здесь я включил какую-то часть кода, я не могу включить весь код:

String sr = "22D201"; 
String[] s = {sr.substring(0, 2),sr.substring(2, 4),sr.substring(4)}; 
byte[] ret = new byte[]{(byte)0x2C, (byte)0x04, (byte)0x01, (byte)0x67, (byte)0x00, (byte)0x00, (byte)0x3D}; 

Теперь я должен приложить byte[] bytes к byte[] ret, но я не могу, как массив в виде строки это String[] s. Так как скрытое String[] s так, что я могу добавить его в byte[] ret.

+3

Это 'String [] S = {0x22, 0xac, 0xFF};' не действует Java: "несовместимые типы: INT не может быть преобразовано в строку". Кроме того, 'AC' и' FF' являются большими для байта. –

+0

Plese [изменить] ваш вопрос и включить ваш реальный код. –

+0

Эй, ребята, спасибо, и я получил это. Я использовал этот метод, и он работает. 'Открытые статические байт [] hexStringToByteArray (String s) {INT Len = s.length(); byte [] data = новый байт [len/2]; для (INT I = 0; г

ответ

0

Вы можете использовать String.getBytes();.

Можно также инициализировать String, используя массив байт и указанную схему кодирования:

String s = new String(new byte[]{ /* Bytes data. */}, "UTF-8");

для массива Strings, массив байт каждой отдельной струны, следовательно, может быть обработан следующим образом:

for(final String s : lStrings) { 
    byte[] lBytes = s.getBytes(); 
} 

Если вы хотите, чтобы сделать непрерывный массив этих типов, вы можете использовать ByteArrayOutputStream.

ByteArrayOutputStream b = new ByteArrayOutputStream(); 
for(final String s : lStrings) { 
    b.write(s.getBytes()); 
} 
final byte[] lTotalBytes = b.toByteArray(); 
/* Make sure all the bytes are written. */ 
b.flush(); 
/* Close the stream once we're finished. */ 
b.close(); 
+0

ОП просит о' String [] '(даже если он не имеет какого-либо), а не' String'. –

+0

Спасибо за ваш совет! Надеюсь, теперь это исправлено. –

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