Шестнадцатеричная QString в шестнадцатеричный QByteArray

#android #blackberry #hex #qstring #qbytearray

#Android #ежевика #шестнадцатеричный #qstring #qbytearray

Вопрос:

Я пытаюсь реализовать генератор OTP для Blackberry OS10. Я уже использую эталонную реализацию на стороне Android, вы можете найти ее здесь:

Итак, я хотел бы преобразовать его в код C / QNX, и у меня возникли некоторые проблемы с шестнадцатеричным преобразованием…

В Java:

 private static byte[] hexStr2Bytes(String hex){
     // Adding one byte to get the right conversion
     // Values starting with "0" can be converted
     byte[] bArray = new BigInteger("10"   hex,16).toByteArray();

     // Copy all the REAL bytes, not the "first"
     byte[] ret = new byte[bArray.length - 1];
     for (int i = 0; i < ret.length; i  )
         ret[i] = bArray[i 1];
     return ret;
 }
  

В QNX:

 QByteArray msg = QByteArray::fromHex(m.toLocal8Bit());
  

Проблема в том, что «m» начинается с «00», и поэтому мой окончательный массив сообщений имеет длину 0…

Например, я пытаюсь закодировать шестнадцатеричную qstring:0000000002ca4e32

В blackberry: m=»»

В Android: m=»?M?»

Итак, кто-нибудь может объяснить мне, как справиться с таким преобразованием?

Спасибо!

Ответ №1:

Что бы я хотел сделать, так это перевести вашу Java-функцию в обычный C , то есть не в формат QT. Затем адаптируйте тип данных к QT.