qt에서 QByteArray와 String이 어떻게 작동하는지 이해하려고합니다. 그래서, 다음과 같은 경우에 QByteArray를 메모리에 생성합니다.QString에서 QByteArray 가져 오기
QByteArray qba;
quint8 version = 1;
qba << version;
quint8 type = 122;
qba << type;
qDebug() << qba.length() << " " << QString(qba);
디버그 문 인쇄 :
2 "\u0001z"
그래서, 나는 데이터의 2 바이트를 가지고 문자열 표현이 추출됩니다.
자, 이제는 문자열 표현 (원시 C++ char 배열로 제공되는)부터 시작하여 QByteArray
표현을 만듭니다. 다음과 같이 그래서 나는 배열을 만들 :
char msg[] = { '\\', 'u', '0', '0', '0', '1', 'z', '\0' };
QString testStr = QString::fromUtf8(msg);
QByteArray testRaw = testStr.toUtf8();
qDebug() << testRaw.length() << " " << QString(testRaw);
을 지금이 인쇄 :
7 "\\u0001z"
내가 그런 문자 배열에서 시작하여 바이트 배열 표현을 얻을 수있는 방법을 모르겠습니다. 이 문자열 인코딩 문제입니다하지만 난 어떤 문자열 (등 fromLatin1
, fromUtf16
) 내가 시도 방법
을의 내가
"\ u0001와"에 귀하의 편집 직후 답변하십시오. 이제 당신의 질문이 정확하지 않다는 것을 알았습니다. 이 전환이 필요한 이유는 무엇입니까? –
데이터 매트릭스 이미지를 디코딩하는 라이브러리 libdmtx를 사용하기 때문에이 변환이 필요합니다. 디코더는'const char *'를 반환하고 기본적으로 구문 분석을 위해 바이너리 표현을 얻으려고합니다. 나는 반환 된 문자열이 UTF-8로 인코딩되어 있다고 추측하고 있지만 잘 모르겠습니다. 그들로부터의 문서는 아무 것도 말하지 않는다. 현재 인코딩을 알고있는 QByteArray와 const char * 사이에서 앞뒤로 어떻게 움직일 수 있는지 재현하려고합니다. – Luca