16進数のバイト形式(例えばffd0
)にする代わりに、ASCII文字をダンプし続けるので、QStringにcharを変換するのに少し問題があります。QStringからQStringへの変換でASCII文字を扱う
私が持っているコードのウォークスルーのビット - 私はQByteArrayにあり、私が作成したチェックサム関数によって操作された六角値(A1-B2-C3
)の列を有します。出力はチェックサムバイト(ffd0
)であり、端末ではprintf("%x", checkSum(output));
と正しく表示されますが、Qtのui機能を使用しているときは、ゴミをプリントアウトします。
Qt Creatorでこれを行う最も効率的な方法は何ですか?ここで
は、いくつかの余分な明確である:
入力:
A1-B2-C3
出力:
ラベル - ""(Nonsenicalアスキーと、時々、ocasionalカタカナとひらがな、入力された16進数にのみ依存)
のprintf - (適切な出力と、私はラベルとLINEEDITのテキストとして設定したいものです)ffd0
コードビット:
char MainWindow::checkSum(QByteArray &b)
{
char val = 0x00;
char i;
foreach (i, b)
{
val ^= i;
}
return val;
}
...
QChar resultCh = checkSum(output);
ui->lineEdit->setText(resultCh);
ui->outputLabel->setText(resultCh);
printf("%x\n", resultCh);
...
問題は、あなたのcheckSumが実際に文字ではないということです。これは8ビット長の符号付き整数です。その符号付き整数をテキスト文字列に変換する必要があります。これはUnicode文字として扱われません(これはあなたが現在行っていることです)。 –