【发布时间】:2019-04-13 22:37:48
【问题描述】:
我正在开发一个桌面应用程序,它从服务器接收字节格式的帧。我有设备的 imei 在收到的帧中发送这些帧。
我尝试添加到 long long 变量,每个字节都有相应的左移 (56, 48, 40..., 0),但数字比 40 bits 长,所以它不起作用。
我只想把它放在一个文本框上,所以QString 格式就足够了,但我对 C++ 一点信心都没有,我不知道我怎么能得到它。
例如,这个 imei:352353222952355 将在这样的框架中接收:[0x00, 0x01, 0x40, 0x76, 0xA0, 0xB0, 0x85, 0xA3],我在我的QByteArray 中有。每次我尝试使用 qDebug() 打印该变量时,我都会得到十六进制表示(“\x00\0x....”)。我想得到的是我在本段第一行输入的数字。
如何在QString 中转换为十进制表示形式?
编辑: 我想在@Peter 的帮助下添加一些与我正在运行的测试相关的信息
这就是我打印 QByteArray 得到的结果:
qDebug() << imei;
"\x00\x01@v\x98[\xD7\xAF"
如果我将该 imei (QByteArray) 传递给您的函数,我会得到: QString imeiStr; imeiStr = ConvertToQString(imei);
qDebug() << imeiStr;
"\u0000\u0001@v?[\u05EF"
如果我调试应用程序并显示两个变量(imei 和imeiStr),我会发现一些差异:
imeiStr 更短,并且从位置 4 开始,与原始位置不同。
【问题讨论】: