16 진수 바이트 형식 (예 : ffd0
)으로 표시하려는 합계 대신 ASCII 문자를 계속 덤프하므로 문자를 QString으로 변환하는 데 문제가 있습니다.QString 변환에 대한 문자의 ASCII 문자 처리
I 가진 코드 산책의 비트 - I는 QByteArray이고 I 만든 체크섬 함수에 의해 작동되는 16 진수 값 (A1-B2-C3
)의 스트링을 갖는다. 출력은 체크섬 바이트 (ffd0
)이며 터미널에 적절하게 인쇄됩니다 (printf("%x", checkSum(output));
).하지만 Qt의 UI 기능을 사용할 때 쓰레기가 인쇄됩니다.
Qt Creator에서 가장 효율적인 방법은 무엇입니까? ""(Nonsenical 아스키하고, 때로는 ocasional -
레이블 :
입력 :
A1-B2-C3
출력 여기
은 몇 가지 추가 설명입니다 카타카나 및 히라가나, 순전히 입력 한 헥사에 따라)
의 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 비트 길이의 부호있는 정수입니다. 그 부호있는 정수를 텍스트 문자열로 변환해야합니다. 유니 코드 문자로 처리하지 마십시오. –