1

Qt を使用して会社のプロトコルを開発しています。ウィンドウ レジストリにクエリを実行し、取得した値を事前にネゴシエートされたソケットに書き込む必要があります。レジストリ データをQString. 8 ビットの Unicode 文字を使用する必要があり、一部の 16 ビットの Unicode 文字には使用する必要があります。を使用QByteArrayしてソケットに書き込む前に、すべてのデータを保存するために使用していますQTcpSocket::write()。リトルエンディアンに従う必要があります。

  1. QStringデータをUnicode 8 ビット形式で取得するにはどうすればよいですかQByteArray(仕様では、文字タイプは に対応すると書かれていますquint8)。

  2. QStringからデータをUnicode 16 ビット形式で取得するにはどうすればよいですかQByteArray(仕様では、文字タイプは に対応すると書かれていますquint16)。

  3. どのような場合でもリトル エンディアンを維持するにはどうすればよいですか?

(Unicode/可変バイトでエンコードされたデータを扱った経験はありません)

4

2 に答える 2

5

ドキュメントを見ることは良いスタートです。

  1. QString::toUtf8()
  2. BOMで始まる新しい QByteArray を作成します。QString::utf16()を使用して ushort 値を取得し、必要なエンディアンで上半分と下半分を QByteArray にマスクします。
  3. UTF-8 にはエンディアンがありません/必要ありません。リトル エンディアンのために 16 ビット値を 8 ビット配列に配置するために必要な ushort マスクは、0x00FFその後になり0xFF00ます。
  4. 今夜、すべてのソフトウェア開発者が Unicode と文字セットについて絶対に、積極的に知っておく必要がある絶対的な最小値 (言い訳はありません!)をお読みください。
于 2012-06-22T09:18:56.413 に答える