"\"
の区切りのHEX値をQByteArray
に8つの別個のintにどのように解析できますか?個別のQByteArray 16進値をintに区切ります
QByteArray mainArray = "\xFF\xFF\x01\x04\x01\x0B\x03\xEC";
int num1;
int num2;
int num3;
...
"\"
の区切りのHEX値をQByteArray
に8つの別個のintにどのように解析できますか?個別のQByteArray 16進値をintに区切ります
QByteArray mainArray = "\xFF\xFF\x01\x04\x01\x0B\x03\xEC";
int num1;
int num2;
int num3;
...
\x
escape sequence文字列リテラルと文字リテラル内の16進数の値を表します。 \x
に続く2つの16進数は、1バイトとして解析されます。たとえば:あなたはmainArray
に16進数で表された値にアクセスしたい場合は、次のよう
QByteArray foo1 = "\x46\x6f\x6f";
QByteArray foo2 = "Foo";
Q_ASSERT(foo1 == foo2); // 'foo1' and 'foo2' are equal
は、単にQByteArray::at
またはsubscript operatorを使用します。
QByteArray mainArray = "\xFF\xFF\x01\x04\x01\x0B\x03\xEC";
int num1 = mainArray[0]; // 0xFF
int num2 = mainArray[1]; // 0xFF
int num3 = mainArray[2]; // 0x01
// ...
一つのことを、心の中で値の型を保つためにQByteArray
はchar
であり、これは符号付きタイプであるため、ほとんどのシステムの\xFF
は、255
の-1
となります。言及した問題を解決するために、ここでの可能な解決策である。
QByteArray mainArray = "\xFF\xFF\x01\x04\x01\x0B\x03\xEC";
int num1 = 0xff & mainArray[0];
int num2 = 0xff & mainArray[1];
int num3 = 0xff & mainArray[2];
// ...
[ 'QByteArray'(http://doc.qt.io/qt-5/qbytearray.html)'オペレータを有します[] ' 'size()'メソッドのようなものです。これは 'std :: vector'のように使うことができます。 – Scheff
'' \ xFF ''の実際の解析はC++コンパイラですでに行われていることに気づいていますか?これは文字列定数のコンパイル方法ですが、 'QByteArray'とは何の関係もありません。 'mainArray [0]'にアクセスすると '255'(または' 0xFF'のように)になります。 – Scheff
私はmainArray [0](と1と2 ..)を試してみましたが、これらはÿのようなランダムなシンボルとそれにxが入ったボックスを含んでいます(コメントには表示されません)。 –