Blackberry OS10 用の OTP ジェネレーターを実装しようとしています。私はすでに Android 側で参照実装を使用しています。ここで見つけることができます。
そこでC++/QNXコードに変換したいのですが、16進数変換でちょっと困って...
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 です...
たとえば、16進数のqstring:0000000002ca4e32をエンコードしようとします
ブラックベリーの場合: m=""
Android の場合: m="?M?"
それで、誰かがそのような変換に対処する方法を私に説明できますか?
ありがとう!