我必须从 MODbus 应用程序读取原始数据并将其转换为十六进制。在 MODbus 中,它以二进制和十六进制显示。假设我想读取 5 位 =00011并且当我将它转换为十六进制时它变成了 0x03 但是当我再次将它从十六进制转换为二进制时。它显示在我的 UI 中,就像这样 = 11only,剩下的 3 个零000消失了。这是我的编码:
if (my_arguments.num_of_points <=8)
{
for(int x = 0; x < 1; x++)
{
block33.append(block22[9+x]);
}
}
hexVal = block33.toHex(); //for converting to binary
stringValue = "0x " + block33.toHex().toUpper(); //display hex raw value
QString hexadecimalNumber = hexVal;
bool ok = false;
QString binaryNumber = QString::number(hexadecimalNumber.toLongLong(&ok, 16),2);
ui->textEdit->append(binaryNumber);
ui->textEdit->setText("RawValue in Hex = " + hex_rawValue );
Run Code Online (Sandbox Code Playgroud)
输出 =
RawValue in …Run Code Online (Sandbox Code Playgroud)