2013-01-14 3 views
1

QByteArray 데이터에 대해 혼란스러워합니다. 누군가 나를 위해 아래 시나리오를 설명해 주시겠습니까? enter image description hereQByteArray 데이터 형식 설명

여기서 각 배열 색인의 데이터 유형은 char입니다. 그 값 중 일부는 이해합니다. 마찬가지로 74 'J' 나는 첫 번째는 ASCII이고 두 번째는 해당 문자라는 것을 알고 있습니다. 그러나 의미는 무엇입니까 -1 '\\377'

다음 gui는 무엇을 의미합니까 ?? QByteArray를 unsigned char* source으로 취하는 함수에 위의 QByteArray를 보냈습니다. 아래 gui는 그 값인 source을 보여줍니다. enter image description here

주요 부분 혼란 C/C의 첫 번째 행의 값 0x87089e8 "\377\330\377\340"

+1

저장 한 내용을 말씀하시면 도움이됩니다. –

+0

이 데이터는 jpeg 이미지가 포함 된 네트워크 요청 응답을 보유합니다. 감사. – Tahlil

답변

2

char이다 ++ 1 바이트 부호있는 정수이다. 이 GUI는 해당 값을 부호가있는 10 진수로 표현하고 동등한 문자 인 ASCII을 표현합니다. 다음과 같은 방법으로 해석된다 할 수있는 바이트 값 -1에 대해 요구하고

:

그들이 보여 이유입니다, (255)에 대한 표준 인쇄 가능한 ASCII 문자가없는 것을
Binary  11111111 
Octal  0377 
Hex  0xFF 
Decimal -1 (Signed) 
      255 (Unsigned) 

ASCII  \377 
      \xFF 

주 그것은 그들이하는 것처럼.

또 다른 예 :

Binary     01001010 
Octal      0112 
Hex        0x4A 
Decimal    74    (Signed) 
           74   (Unsigned) 
ASCII      'J' 
+0

안녕하세요, 당신이 아주 잘 설명 한 부분을 이해합니다. 감사. 이 질문에 또 다른 부분을 추가했습니다. 너도 그 대답을 해주실 수 있니? 감사. – Tahlil

2

나는 0x87089e8 "\377\330\377\340"의 의미에 대해 대답하고있다.

0x87089e8source 포인터의 값, 즉 메모리에 의 주소입니다. "\377\330\377\340"은 주소가 인 8 진수 이스케이프 시퀀스로 저장된 문자열입니다. 이러한 문자는 모두 ASCII가 아니기 때문에 (ASCII는 0에서 127까지만 표시되기 때문에)이 방법으로 으로 작성되었습니다. 16 진수에서 바이트 문자열은 ff d8 ff e0 00입니다. 끝에있는 00은 으로 해석되며 문자열 끝 기호 (ASCII NULL)로 해석됩니다.

+0

설명 주셔서 감사합니다 :) – Tahlil