ОК, я решил свою проблему:
void MainWindow::msgModify(QByteArray& ba)
{
QByteArray hexBa = ba.toHex();
int t = hexBa.mid(2,2).toInt(&OK,16) + 0x80;
QByteArray c;
hexBa.replace(2,2, c.setNum(t,16));
ba = QByteArray::fromHex(hexBa);
}
Я хотел, чтобы эта функция изменяла только 2-й символ, добавляя 0x80 в шестнадцатеричном формате, ie. Входные данные: ascii: "123456" -> hex: 3132333435 Выходные данные: ascii: "1²3456" -> hex: 31B2333435
Конечно, консоль будет кодировать его как "1 \ xB2", "3456", но это не так. Как выяснилось, в моем случае наиболее важен шестнадцатеричный формат.