【发布时间】:2014-08-24 10:14:58
【问题描述】:
我正在尝试为 Blackberry OS10 实现 OTP 生成器。我已经使用了Android端的参考实现,你可以找到它here:
所以我想将其转换为 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' 开头,所以我的最终 msg 数组长度为 0...
例如我尝试编码十六进制 qstring:0000000002ca4e32
在黑莓中:m=""
在 Android 中:m="?M?"
那么你能解释一下如何处理这样的转换吗?
谢谢!
【问题讨论】:
标签: android blackberry hex qstring qbytearray