在 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或ANDing来操作8位,然后将它们存储在一个字符串中。

然后我想将输出读取为十进制。

这个程序的输出是:

VAL_LEFT: 100
packet: "d"

这里的"d"是什么?

100 是您的机器编码小写 d 字符的方式。所以

char x = 'd';

相同
char x = 100;

您可能将数字与表示混淆了。一百是一个数字。它可以表示为字符串“100”或一百辆汽车或类似“多于 ninety-nine”的句子。它与 数字 相同,但表示方式相同。

“100”是一个代表。在基数 10 中,它代表数字一百。但在其他表示系统中,它可以表示其他数字。

你让字符串存储了数字一百。然后使用系统的字符表示打印它。那么,您的系统使用百位上的数字来表示字符 "d"。

您希望您的字符串存储什么?一百这个数字?字符“1”、“0”、“0”?或者什么?

看起来你想要
packet.push_back (QString::number(VEL_LEFT));

而不是
packet.push_back (QChar (VEL_LEFT));

QString::number 取一个数字,return 是一个表示该数字的字符串。
例如如果 VEL_LEFT 等于 100,QString::number 将 return 字符串“100”。

我想首先通过 ORing 或 ANDing 操作 8 位。然后我想将它们存储在 QString 中,然后我想将输出读取为 "decimal".

以下作品。

#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。