Как объединить несколько шестнадцатеричных значений в одно - PullRequest
0 голосов
/ 03 мая 2019

Я использую QStringList для чтения строк / тысяч строк из конфигурационного файла.Я хочу преобразовать 4 строки из каждой строки в 4 шестнадцатеричных значения, объединить эти значения в одно шестнадцатеричное значение и отправить его через UART в (STM32) uC.

Пример: чтение из конфигурации: 1200,1200,1200,1200 -> разделить запятыми: 1200 1200 1200 1200 -> преобразовать в шестнадцатеричные: 04B0 04B0 04B0 04B0 -> сцепить шестнадцатеричные значения: 04B004B004B004B0

if(lines.at(i).contains(",")){
      while(lines.at(i+j) != "\n"){
      QStringList speed_chunks = lines.at(i+j).split(",");
      uart = speed_chunks.at(3)+speed_chunks.at(4)+speed_chunks.at(5)+speed_chunks.at(6)+"\0";

    m1 = speed_chunks.at(3).toInt();
    m1h = QString::number(m1, 16).toUpper();

    m2 = speed_chunks.at(4).toInt();
    m2h = QString::number(m2, 16).toUpper();

    m3 = speed_chunks.at(5).toInt();
    m3h = QString::number(m3, 16).toUpper();

    m4 = speed_chunks.at(6).toInt();
    m4h = QString::number(m4, 16).toUpper();

    uart_hex = m1h+m2h+m3h+m4h +"\0"; WRONG!!!
    //m1hm2hm3hm4h needed, not plus function!

qDebug()<<uart_hex;

m_serial.write(uart()); ?

                               }
                                 }

Это простой способ сделать это?Большое спасибо!

1 Ответ

0 голосов
/ 03 мая 2019

Чтобы напечатать результат, вы можете использовать комбинацию std :: hex и std::stringstream:

std::stringstream stream;
QStringList items = lines.at(i+j).split(",");
for (auto str : items) {
    const auto trimmed = str.trimmed();
    const auto number = trimmed.toInt();
    stream << std::hex << number;
}

const auto result = stream.str();
std::cout << result;

. Будет напечатано:

4b04b04b04b0                                                                                                                                                                                                                                                 

Вы можете попытаться преобразовать результат обратно в целое число.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...