2014-10-08 1 views
-1

자, 개인 프로젝트의 경우 C#을 사용하여 C++에서 직렬화 된 사용자 지정 파일을 사용하는 도구를 코딩하는 작업을 수행했습니다.BinaryReader 클래스를 사용하여 C#을 사용하여 사용자 정의 파일 (C++)을 읽는 방법?

나는 BinaryReader 클래스를 사용하여 효과적으로 생각했지만 올바른 경로 였지만 파일을 직렬화하는 데 사용되는 구조체가 없으면 유용한 정보를 얻을 수 없다고 생각하여 요청했습니다. 문제는 내가 보낸 정보가 모두 qint32 필드를 포함하는 2 개의 구조체 이름 (예 : Qt 라이브러리를 사용함)입니다.

솔직히 말해서 나는 이것으로 완전히 잃어 버렸고, qint32이 Qt의 int32 표현인지 아니면 효과적으로 그것과 다른지 알고 싶습니다.

감사합니다.

+0

'C++'과 'Qt'로 질문에 태그를 달면 해당 프레임 워크를 아는 사람들이 더 많은 결과를 얻을 수 있습니다! – David

+0

좋아요, 고마워요. – N3HL

답변

2

question and answer에 따르면, qint32의 길이는 32 비트이다.

즉, BinaryReader.ReadInt32()을 사용하여 리틀 엔디안이라고 가정하고 숫자를 읽을 수 있습니다. 다음과 같이

qglobal.h에서 qint32에 대한 정의는 다음과 같습니다

typedef int qint32;    /* 32 bit signed */ 

C++ 표준 숫자의 엔디안 대신 아키텍처 프로그램이 실행에 컴파일을 지정하지 않습니다. x86 및 x64 프로세서는 리틀 엔디안입니다. 숫자의 엔디안을 변경할 수 있습니다 (예 : htonl 함수 사용). 명확한 답을 얻으려면 파일을 생성 한 사람에게 물어보십시오.

+0

[endianness] (http://en.wikipedia.org/wiki/Endianness)는 어떻습니까? 그것은 동일합니까? .. –

+0

@ L.B 나는 더 많은 정보를 추가했습니다. x86 또는 x64 시스템에서 나온 것이라면 아마 little endian 일 것입니다. – Steve

+0

좋아요, 고마워요. – N3HL