2

私は Qt を使用しておりunsigned char *bytePointer、現在のバイトの数値を出力したいと考えています。以下は私のコードです。これは、コンピューターに接続されたマシンから受信した連続バイトの int 値と 16 進値を提供することを目的としています。

int byteHex=0;
byteHex = (int)*bytePointer;

qDebug << "\n  int: " //this is the main issue here. 
          << *bytePointer;

std::cout << " (hex:  "
          << std::hex
          << byteHex
          << ")\n";

}

これにより完璧な結果が得られ、実際の数値が得られますが、このコードは API に入り、qDebug などの Qt 専用関数は使用したくありません。だから私がこれを試すとき:

int byteHex=0;
byteHex = (int)*bytePointer;

std::cout << "\n  int: " //I changed qDebug to std::cout
          << *bytePointer;

std::cout << " (hex:  "
          << std::hex
          << byteHex
          << ")\n";

}

出力は 16 進値を完全に返しますが、int 値は記号を返します (☺、└、§ のようなものをいくつか挙げます)。

私の質問は: どうすれば とstd::cout同じ出力を得ることができqDebugますか?

編集:何らかの理由で、シンボルは特定の Qt 設定でのみ発生します。なぜそうなったのかはわかりませんが、現在は修正されています。

4

2 に答える 2

2

他の人がコメントで指摘したように、出力を 16 進数に変更しますが、実際にはここに戻していません。

std::cout << " (hex:  "
          << std::hex
          << byteHex
          << ")\n";

後でこれを適用する必要があります。

std::cout << std::dec;
于 2014-12-05T14:41:54.897 に答える
1

標準出力ストリームは、任意の文字タイプを数値ではなく文字として出力します。数値を出力するには、文字以外の整数型に変換します。

std::cout << int(*bytePointer);
于 2014-12-05T14:32:40.243 に答える