2012-12-02 2 views
7

정수를 나타내는 데 4 바이트가 필요합니다. QByteArrayint을 저장하면 4 바이트 만 걸릴 수 있습니까?4 바이트 만 사용하여 QByteArray에 정수 저장

  • QByteArray::number(..)은 정수를 문자열로 변환하여 4 바이트 이상 차지합니다.
  • QByteArray((const char*)&myInteger,sizeof(int))도 작동하지 않는 것 같습니다.
+0

실제로 두 번째 해결 방법이 작동합니다. 제대로 다시 캐스팅해야합니다. 타이머가 그것을 다른 사람들을 돕는 것을 허락 할 때 대답을 게시 할 것입니다 (나는이 질문을 사방에, 아무데도 SO 방식으로 제대로 해석하지 않습니다 :)) –

+0

이것이 다소 오래되었다는 것을 알고 있습니다 만, 제대로 던져 줘? 나는 지난 2 시간 동안 그것을 올바르게 캐스팅하려고 노력했다. : D –

답변

15

QByteArray에 정수를 배치하는 방법은 여러 가지가 있지만 다음은 일반적으로 깨끗한입니다 : 이것은 여러 정수 (또는 다른 데이터 유형을) 쓸 수있는 장점이있다

QByteArray byteArray; 
QDataStream stream(&byteArray, QIODevice::WriteOnly); 

stream << myInteger; 

바이트 배열에 꽤 편리하게. 또한 QDataStream::setByteOrder을 사용하여 데이터의 엔디안을 설정할 수 있습니다.

+0

이것은 바이트 배열에 4 바이트 저장소를 생성한다는 보장은 없다. –

+3

@StephenChu 어떤 상황에서 4 바이트 배열을 생성하지 않을 것입니까? (특히'myInteger'가'qint32' 또는'quint32' 타입이라면)? –