Беру число из массива и перевожу в строку в связи с тем что работать надо с битами.
QString DD1_0 = QString::number(array[1],2);
QString DD1_1 = QString::number(array[2],2);
// проверяем на размер в 8 бит если не хватает с 8 битами добавляем не достающие
if(DD1_0.size() != 8){
DD1_0.resize(8);
for(int f =0 ; f< 8-DD1_0.size();f++)
// DD1_0 = '0'+DD1_0;
// DD1_0.prepend("0");
DD1_0.insert(0, "0");
}
if(DD1_1.size() != 8){
DD1_1.resize(8);
for(int f =0 ; f< 8-DD1_1.size();f++)
DD1_1 = '0'+DD1_1;
}
QStringRef DD1_0_ref =DD1_0.rightRef(8); // отрезаем "\u0000" окончание вектора
QStringRef DD1_1_ref =DD1_1.rightRef(8); // отрезаем "\u0000" окончание вектора
хотелось бы получить
DD1_0 = "1010110"
DD1_1 = "10000000"
после инсерта
DD1_0 = "01010110"
DD1_1 = "10000000"
ТО что сейчас получаю :
DD1_0 = "1010110\u0000"
DD1_1 = "10000000"
QString number_str = QString("%1").arg(734, 16, 2, QChar('0'));
734 - ваше число
16 - размер результирующей строки (как я понял из контекста это 2 байта или 16 бит)
2 - основание (2 - бинарная)
QChar('0') - символ-заполнитель результирующей строки
Результат:
0000001011011110
Док:
http://doc.qt.io/qt-5/qstring.html#arg
Пояснения : берем из массива число и через QString(вектор(хотя по сути интерфейс)) закладываем 16-ричное число в 2-ричную строку.
Потом проверяем на размер (ибо в 16-ричном числе 8 бит), но так как QString при переводе удаляет нулевые символы до первой единички то мы проверяем строку на размерность в восемь элементов если на не совпадает то выполняется if где в каждом проходе дополняется в начало строки по одному нулю.
QString DD1_0 = QString::number(array[1],2);
if(DD1_0.size() != 8){
for(int f=0; f<8-DD1_0.size();f++)
DD1_0= '0'+ DD1_0;
}
DD1_0 = "01010110"
Ради @MBo дополню ответ :3
мне нужен был первый бит главного регистра я вытянул его текстом, математические операции я провожу все таки математическими действиями в общем вот два байта 7F(главный байт array[2], DD1_1 ) и FF (второй байт array[1], DD1_0)
DD1_0 = DD1_1 + DD1_0;
int znach = DD1_0.toInt(nullptr,2); // перегнал строку в инт
qDebug() << "DD1_0 + DD1_1 :" << DD1_0;
qDebug() << "znach : " << znach;
uint16_t rezult = ((uint16_t)array[2]<<8)+(uint16_t)array[1]; // сдвинул на 8 бит и добавил второй байт :3
qDebug() << "rezult: " << rezult;
---------------------------------------
DD1_0 + DD1_1 : "0111111111111111"
znach : 32767
rezult: 32767
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
У меня есть класс простого объекта, например man, с двумя полями name и ageИ мне нужно, чтоб при старте программы, считывался текстовый конфигурационный...
Программа выдает такую ошибку при запускеПрописал в командоре класспас
Объясните логику написания приложения используя JavaFXСуть у меня такая: есть три FXML файла mainWindows, Windows2 - которое открывается используя Button2,...