2012-10-08 11 views
0

저는 Qsonson을 사용하여 json 형식으로 반환 된 데이터를 구문 분석합니다. 반환 된 항목 중 하나는 80 자 바이트 배열입니다. QJson에서 반환 된 QVariantMap은 Qt Creator 디버거에서 볼 때 긴 정수 배열로 나타납니다.QJson QVariantMap to QByteArray

지도를 반복하는 것보다 QVariantMap을 Byte 배열로 변환하고 각 QVariant를 바이트로 캐스팅 한 다음 바이트 배열에 할당하는 더 좋은 방법이 있습니까?

QByteArray byteArray[60]; 
QVariantMap returnedMap; 
for (int n=0; n< returnedMap.count(); ++n){ 
    byteArray[n] = (char)returnedMap[n]; 
} 

(코드 위에있는 그림, 나는 올바른 구문은 바이트의 정수를 캐스팅 무엇인지. QVariant '유형에서 유효하지 않은 캐스트'의 결과 위의 코드는 문자 '를'입력 '확실하지 않다)

답변

0

"키 - 값"쌍의 수를 값 배열로 매핑하려는 이유가 무엇인지 모르겠지만 원하는 경우 구문은

과 같을 것입니다.
QByteArray arr; 
QVariantMap map; 
foreach(QVariant tmp, map) 
    arr.append(tmp.toChar()); 

지도를 반복하는 동안 키를 오름차순으로 이동하므로 첫 번째 요소의 배열은 가장 낮은 키와 같고 그 반대의 경우도 마찬가지입니다.

+0

귀하의 대답은 올바른 방향으로 나를 잡았습니다. QJson은 실제로 ByteArray 대신 uLongLong 값의 목록을 반환합니다. 각 uLongLong을 Byte로 변환해야하는데, 이것은 char와 동일하다고 가정합니다. – DarwinIcesurfer