#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.