1

ソースにオクテットがあります。だから私はそれをQStringに変換する必要があります。

QString str(a); を試しました。しかし、それは機能しません。私が読んだものから、オクテットは unsigned char であると仮定します

   a = 'A';

更新: a はオクテットです。私が読んだところによると、「DDS_Octet は 1 バイト (8 ビット) に相当するため」( http://community.rti.com/kb/what-max-number-octets-i-can -put-topicdata-builtin-topics )

更新 2:

unsigned char (unsigned byte) として定義されています

4

2 に答える 2

0

おそらく、オクテットを単独で に変換するべきではありません。QStringこれにより、余分な変換が発生します。Q(Latin1)Char文字列操作をまとめる必要がある場合は、おそらくそれを変換して使用することをお勧めします。

それを自分で行うだけでは非現実的です。それでもこれを主張する場合は、次のように QString コンストラクターを使用します。

main.cpp

#include <QString>
#include <QDebug>

int main()
{
    unsigned char a = 'A';
    QString string(a);
    qDebug() << string;
    return 0;
}

main.pro

TEMPLATE = app
TARGET = main
QT = core
SOURCES += main.cpp

ビルドして実行

qmake && make && ./main

出力

"A"

QString が正しく動作するためには QCoreApplication インスタンスが必要であるという私の暴言はやめさせてください。:-)

QString には QChar を受け取るコンストラクターがあり、QChar にはunsigned char を受け取るコンストラクターがあるため暗黙的に使用できるため、これはすぐに使用できます。

ところで、最近のオクテットはほぼ独占的に 1 バイトあたり 8 ビットです。別の方法で処理されることを心配する必要はありません。リンクしたコードのコードを見てくださいね。

// DDS_Octet is defined to be 8 bits. If chars are not 8 bits
// on your system, this will not work.
于 2014-10-20T09:15:35.610 に答える