十六进制QString到十六进制qByteArray

时间:2014-07-03 10:25:25

标签: android blackberry hex qstring qbytearray

我正在尝试为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());

问题是&#34; m&#34;以&#39; 00&#39;开头所以我的最终msg数组是0长...

例如,我尝试编码十六进制qstring:0000000002ca4e32

在黑莓手机中:m =&#34;&#34;

在Android中:m =&#34;?M?&#34;

所以你可以解释一下如何处理这样的转换?

谢谢!

1 个答案:

答案 0 :(得分:0)

我要做的是将您的Java函数转换为纯C ++,即不是QT格式。然后将数据类型调整为QT。