2012-02-02 2 views
1

파이썬의 "구조"에 해당하는 라이브러리를 찾고 있는데, 아마도 누군가가 이식했습니다.Python의 "construct"라이브러리에 해당하는 C++

구문은 이진 데이터에 대한 강력한 선언적 파서입니다.

그것은 오히려 절차 코드보다는 선언적 방식으로 데이터 구조를 정의하는 개념에 기초한다 : 간단한 구조는 점점 복잡한 데이터를 구조를 형성하기 위해 계층 적 결합 될 수있다. 그것은 오늘날의 일반적인 두통 인 대신 파싱 재미를 만드는 최초의 라이브러리입니다.

java와 비슷한 질문입니다. Java equivalent of Python's "construct" library

감사합니다.

+1

당신이 도서관에서하고 싶은 일에 대해 좀 더 설명했다면 (아마도 아래에 적어 놓은 링크를 포함하여) 이것은 훨씬 더 명확한 질문이 될 것입니다. 파이썬 라이브러리와 똑같은 기능을 가진 C 라이브러리는있을 수는 없지만, 원하는 것을 수행하는 C 라이브러리가있을 가능성이 큽니다. –

답변

0

왜 그렇습니까? struct (C 및 C++ 기본). 런타임에만 결정될 수있는 필드 집합을 가진 구조체를 생성하는 기능을 원한다면; 이 경우 malloc (struct 변수에 필요한 메모리를 할당하는 데 사용)과 memcpy (struct 변수에 데이터를 쓰는 데 사용)이 트릭을 수행해야합니다.

+0

기능이 적습니다. 나는 다음과 같은 코드를 찾는다. [링크] (http://blog.csdn.net/ani_di/article/details/7225343)'mbr = Struct ("mbr", HexDumpAdapter (Bytes ("bootloader_code", 446)), 배열 (....)' – fengxing

+0

'struct mbr {char bootloader_code [446]; struct partition partitions [4]; ...}''struct partition'은 그 페이지에 정의 된 필드가있는 또 다른 구조체입니다 –

+0

@EtiennePerot : 링크 된 코드에서 보면 Struct 객체의 중요한 부분은 이진 입력을 "구문 분석"하는 방법 인 것으로 나타났습니다. 알려진 상수 값을 확인하는 것입니다. 이것은 정적 인'struct'와는 매우 다릅니다 . –

1

Protocol Buffers을 살펴 보는 것이 좋습니다. 이 라이브러리를 사용하면 C++, Java 또는 Python으로 컴파일 할 수있는 중간 언어로 데이터에 대한 설명을 작성할 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. 프로토콜 버퍼가 무거 우므로 디스크의 일부 파일 시스템 필드를 읽고 싶습니다. – fengxing

관련 문제