首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在QChar中推送QString

在QChar中推送QString
EN

Stack Overflow用户
提问于 2016-01-21 07:26:16
回答 4查看 1.6K关注 0票数 1
代码语言:javascript
复制
#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位,然后将它们存储在一个字符串中。

那么我想把输出读成十进制。

该程序的输出如下:

代码语言:javascript
复制
VAL_LEFT: 100
packet: "d"

这里什么是"d“?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-01-21 08:02:43

我想首先通过ORing或ANDing操作8位。然后,我想将它们存储在QString中,然后将输出读入“十进制”。

下面的作品。

代码语言:javascript
复制
#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();
}
票数 0
EN

Stack Overflow用户

发布于 2016-01-21 07:29:35

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

代码语言:javascript
复制
char x = 'd';

是相同的

代码语言:javascript
复制
char x = 100;

你可能把数字和表示混淆了。一百是个数字。它可以用字符串"100“表示,也可以用一百辆汽车表示,也可以用一个句子来表示,比如”一百九十九“。不管怎么表示,它都是同一个数字。

"100“是一种表述。在基数10中,它代表了数字100。但在其他表示系统中,它可以表示其他数字。

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

你想要你的绳子储存什么?一百个?字符"1","0","0"?不然呢?

票数 3
EN

Stack Overflow用户

发布于 2016-01-21 07:34:49

看来你想

packet.push_back (QString::number(VEL_LEFT));

而不是

packet.push_back (QChar (VEL_LEFT));

QString::number接受一个数字并返回一个具有该数字的表示形式的字符串。

例如,如果VEL_LEFT等于100,QString::number将返回字符串"100“。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34917701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档