gpt4 book ai didi

c++ - 处理 char 到 QString 转换中的 ASCII 字符

转载 作者:行者123 更新时间:2023-11-28 05:19:28 26 4
gpt4 key购买 nike

我在将 char 转换为 QString 时遇到了一些麻烦,因为它一直在转储 ASCII 字符而不是我想要的十六进制字节形式的总和(例如 ffd0)。


浏览一下我的代码 - 我有一串十六进制值 (A1-B2-C3),它位于 QByteArray 中并由 checkSum 函数操作我创造了。输出是一个校验和字节 (ffd0),并使用 printf("%x", checkSum(output)); 在终端上正确打印但是当我使用 Qt 的 ui 函数时,它打印出垃圾。

在 Qt Creator 上执行此操作的最有效方法是什么?


这里有一些额外的说明:

输入:

A1-B2-C3

输出:

标签 - “￐”(无意义的 ascii,有时还有片假名和平假名,完全取决于输入的十六进制)

printf - ffd0(这是正确的输出,我想将其设置为标签和 lineEdit 的文本)


代码位:

char MainWindow::checkSum(QByteArray &b)
{
char val = 0x00;
char i;
foreach (i, b)
{
val ^= i;
}

return val;
}

...

QChar resultCh = checkSum(output);

ui->lineEdit->setText(resultCh);
ui->outputLabel->setText(resultCh);

printf("%x\n", resultCh);
...

最佳答案

正确的结果不是ffd0而是d0

为什么要将 char 复制到 QChar?如果出于某种原因,你仍然想这样做,你应该在使用它之前将它转换成它的 unicode 值:

printf("%x", resultCh.unicode());

和:

ui->lineEdit->setText(QString("%1").arg(resultCh.unicode(), 0, 16));

注意 printf("%x", resultCh); 应该在编译时给你一个很大的警告。

关于c++ - 处理 char 到 QString 转换中的 ASCII 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41822450/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com