2017-02-17 49 views
-1

Мне нужно объединить две шестнадцатеричные строки в одну. Первый из них состоит так:Объединение двух шестнадцатеричных строк в читаемые данные в Java

while(i=0;i<10;i++){ 
    int ch = inStream.read(); 
      String hexch=""; 
      if (ch >= 0) { 
      hexch += Integer.toHexString(ch); 
      } 

в потоке я reaceave из последовательного порта символы СТ = 0 Второй так:

  String one = ";sp=16;" 
      String sqhex=""; 
      byte[] data = one.getBytes(); 
       int j; 
       for (j=0;j<data.length;j++) 
       { 
        sqhex+=Integer.toHexString(data[j]); 
       } 

мне нужно составить строку с обеими строками, которые дают мне это: «ST = 1; sp = 16;» в HEX. Чтобы сделать это, я сделал это:

String mensagem ="" 
mensagem = hexch + sqhex; 

Дело в том, что в результате шестнадцатеричная строка,

53543d31d3b73703d31363b 

не отражает то, что мне нужно. Вместо «ST = 1; sp = 16;» Я получаю «ST = 1Ó · 7Óc»

Есть ли способ объединить шестнадцатеричные строки, чтобы построить то, что мне нужно?

Благодаря

+1

Не знаете, что вы просите. Попробуйте придумать ** настоящий ** [mcve]; но помимо этого: определите, что вы подразумеваете под «присоединением» шестнадцатеричных строк. Вы имеете в виду «числовое добавление»; или просто "a" + "b" = "ab" конкатенация ?! Кроме того: пожалуйста, прочитайте свой ввод несколько раз перед отправкой; это всего лишь ** беспорядок **. – GhostCat

+0

Как конкатенация последовательности шестнадцатеричных цифр приводит к «ST = 1Ó · 7Óc»? Какой код вы нам не показываете? – VGR

+0

@GhostCat Я имею в виду делать конкатенацию. Я не могу загрузить пример проверки, потому что весь код имеет другие варианты, которые я объяснял выше. – kohhworlwide

ответ

0

Это потому, что Integer.toHexString (ч) имеют различную длину. Таким образом, результат вашего процесса кодирования не является декодируемым.