Я разрабатываю настольное приложение, которое получает кадры в байтовом формате с сервера. У меня есть 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
?
EDIT:
Я хочу добавить информацию о тесте, который я запускаю, с помощью @ 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, отличается от оригинала.