C:\Users\23501\Desktop\5\QT\System_fingerprint\widget.cpp:596: error: invalid conversion from 'int' to 'const char*' [-fpermissive] hexArray.append(QByteArray::fromHex(sum)); ^
时间: 2024-04-22 09:27:54 浏览: 176
在您的代码中,出现了一个错误。`QByteArray::fromHex()` 函数需要接收一个 `const char*` 类型的参数,表示十六进制字符串。但您传递给它的是一个 `QByteArray` 类型的变量 `sum`,这导致了类型不匹配的错误。
要解决这个问题,您可以使用 `QByteArray::fromHex()` 函数直接将十六进制字符串转换为 `QByteArray` 类型,而不需要先将其存储在另一个变量中。以下是修改后的代码示例:
```cpp
#include <iostream>
#include <QString>
#include <QByteArray>
int main() {
QByteArray hex_max_id = "ABCDEF";
QByteArray hexArray;
hexArray.append(static_cast<char>(0xFF));
hexArray.append(static_cast<char>(0x05));
hexArray.append(static_cast<char>(0x00));
// 将十六进制字符串直接转换为 QByteArray
QByteArray sum = QByteArray::fromHex(hex_max_id);
hexArray.append(sum);
// 输出结果
std::cout << "hexArray: " << hexArray.toHex().data() << std::endl;
return 0;
}
```
在这个示例中,我们直接使用 `QByteArray::fromHex()` 函数将 `hex_max_id` 的十六进制字符串转换为 `QByteArray` 类型,并将其添加到 `hexArray` 中。
请注意,在输出结果时,我们使用了 `toHex()` 函数将 `hexArray` 转换为十六进制字符串,并使用 `data()` 函数将其转换为 C 风格字符串,并输出到标准输出流中。
希望这次能够解决您的问题!如果您还有其他疑问,请随时提问。
阅读全文