在QString中推送QChar
Pushing a QChar in QString
#include <QCoreApplication>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a (argc, argv);
unsigned char VEL_LEFT = 0;
VEL_LEFT = VEL_LEFT | 100;
QString packet;
packet.push_back (QChar (VEL_LEFT));
qDebug () << "VEL_LEFT: " << VEL_LEFT;
qDebug () << "packet: " << packet;
return a.exec();
}
这里的目的是通过 ORing 或 AND 来操作 8 位,然后将它们存储在字符串中。
然后我想将输出读取为十进制。
该程序的输出为:
VAL_LEFT: 100
packet: "d"
这里的"d"是什么?
> 100 是机器对小写 d 字符进行编码的方式。所以
char x = 'd';
与
char x = 100;
您可能会将数字与表示混淆。一百是一个数字。它可以表示为字符串"100"或一百辆汽车或像"一个超过九十九"这样的句子。它与表示的数字相同。
"100"是一种表示形式。在基数 10 中,它代表数字 100。但在其他表示系统中,它可以表示其他数字。
您使字符串存储为第一百。然后,使用系统的字符表示形式打印它。好吧,您的系统使用百上的数字来表示字符"d"。
您希望字符串存储什么?第一百名?字符"1"、"0"、"0"?还是什么?
看起来像你想要
packet.push_back (QString::number(VEL_LEFT));
而不是
packet.push_back (QChar (VEL_LEFT));
QString::number
接受一个数字并返回一个具有该数字表示形式的字符串。
例如,如果VEL_LEFT
等于 100,QString::number
将返回字符串"100"。
我想首先通过ORing或AND来操作8位。然后我想将它们存储在 QString 中,然后我想将输出读取为"十进制"。
以下作品。
#include <QCoreApplication>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a (argc, argv);
unsigned char SOP = 0;
unsigned char E_STOP = 0;
unsigned char DIRECTION = 0;
unsigned char VEL_LEFT = 0;
QString packet;
packet.append (SOP);
E_STOP = E_STOP | 1;
packet.append (E_STOP);
DIRECTION = DIRECTION | 3;
packet.append (DIRECTION);
VEL_LEFT = VEL_LEFT | 100;
packet.push_back (VEL_LEFT);
qDebug () << "VEL_LEFT: " << VEL_LEFT;
qDebug () << "packet0: " << (int)packet[0].toLatin1();
qDebug () << "packet1: " << (int)packet[1].toLatin1();
qDebug () << "packet2: " << (int)packet[2].toLatin1();
qDebug () << "packet3: " << (int)packet[3].toLatin1();
qDebug () << "packet: " << packet.length();
return a.exec();
}
你可能想要的是这个?
unsigned char tmpString[4];
*(uint32_t *)tmpString = 3158065;
"100"是(就像你在键盘上键入它一样)一个"1"(ASCII 49),后跟两个"0"(ASCII 48)和一个0来确定字符串的结尾。
相关文章:
- 将 Qvector<uint8_t> 转换为 QString
- 如何通过按下第三个窗口中的按钮,将QString从一个窗口获取到另一个窗口
- QStringList vs list<shared_ptr<QString>> 性能比较C++
- 将 hh:mm:ss.zzz 时间 QString 转换为毫秒的单行函数?
- Qt C++ 如何在 1 个命令中砍掉属于 QStringList 成员的 QString 字母
- 为什么使用 QString::right 在字符串开头省略逗号?
- Qt:更新 QString 时自动生成的代码失败
- 如何将 QString 的 QList 分配给列表视图?
- 加倍到 QString 并保存在 QJsonDocument 中
- 如何将包含指数的 QString 转换为C++中的双倍?
- 是否可以直接将QString输入(例如)googletest的ADD_FAILURE()宏?
- 如何从 QString 中包含的十六进制值中获取 ASCII 字符?
- 将 QAction 的 QString 文本作为参数传递
- 如何计算QString开头的重复字符?
- 将 nullptr QVariant 与空 QString 进行比较,在 Qt5.9 和 Qt5.12 中给出了不同的输
- 在Qt-cpp中通过像素获取QString的子字符串
- 删除unicode def后,无法将QString转换为TCHAR
- 为什么Qt QString的替换方法会改变QString?
- qstring to qchar specialcharacter
- 在QString中推送QChar