Конкатенация строк и байтовых массивов - PullRequest
4 голосов
/ 06 августа 2011

У меня есть строка, которую я должен объединить с байтовым массивом, поэтому я попробовал это

String msg = "msg to show";

byte[] msgByte = new byte[msg.length()];

try {
msgByte = msg.getBytes("UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}

byte[] command = {2,5,1,5}

byte[] c = new byte[msgByte.length + command.length];
System.arraycopy(command, 0, c, 0, command.length);
System.arraycopy(msjByte, 0, c, command.length, msjByte.length);

for(Byte bt:c)
    System.out.println(bt+"");

Это вывод:
2 5 1 5 109 115 103 32 ...

но результат, который я ищу, это
2 5 1 5 м с г ...

Мне нужно это в одном массиве, потому что он используется в качестве команды для Bluetooth-принтера.

Есть ли способ, какие-либо предложения?

Заранее спасибо! :)

Ответы [ 2 ]

3 голосов
/ 06 августа 2011

Вы не можете иметь байтовый массив, содержащий '2 5 1 5 мс g'.Из документации :

Тип данных байта - это 8-разрядное целое число со знаком двоичного числа со знаком.Он имеет минимальное значение -128 и максимальное значение 127 (включительно).

Я не могу представить сценарий, в котором вы на самом деле захотите объединить некодированные байты со строкой, новот решение, которое возвращает char[].

public static void main(String[] args) {
    final String msg = "msg to show";
    final byte[] command = { 2, 5, 1, 5 };

    // Prints [2, 5, 1, 5, m, s, g,  , t, o,  , s, h, o, w]
    System.out.println(Arrays.toString(concat(msg, command)));
}

private static char[] concat(final byte[] bytes, final String str) {
    final StringBuilder sb = new StringBuilder();
    for (byte b : bytes) {
        sb.append(b);
    }
    sb.append(str);
    return sb.toString().toCharArray();
}
1 голос
/ 06 августа 2011

Альтернативой было бы сделать это ...

String msg = "msg to show";
char[] letters = msg.toCharArray();
byte[] command = {2,5,1,5};
String result;
for (String str: command) {
    result += str + " ";
}
for (String str: letters) {
    result += str + " ";
}
System.out.println(result);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...