2013-03-22 1 views
4

바이너리 파일에서 읽고 싶은 구조가 있습니다. 나는 파이썬 구조체를 사용하려고합니다. 여기에 읽기 용 문자열 :파이썬 구조체 크기가 일치하지 않습니다

.... = struct.unpack('I36s36s72sQQIIH4s36s4s20s', datab.read(238)) 

잘 작동합니다. 화면에 값을 인쇄하여 보았습니다.

이제 "4s"를 "I"로 변경하고 싶습니다. 나는에 문자열을 변경하는 경우 :

.... = struct.unpack('I36s36s72sQQIIHI36s4s20s', datab.read(238)) 

(최초의 "정"을 "I"변경), 나는 오류가 점점 : 문서는 "나는"크기, 왜 내 변화 4 바이트 말했듯이

struct.error: unpack requires a bytes object of length 240 

오류가 발생합니까?

+0

아마 가짜 접두사 또는 접미어가 작동할까요? (x00) –

답변

5

이것은 정렬과 관련이 있습니다. I은 4 바이트 경계에 정렬되므로 앞에 2 바이트의 패딩이 필요합니다. 한편, 4s에는 이러한 요구 사항이 없습니다.

이 기능을 끄는 방법은 7.3.2.1. Byte Order, Size, and Alignment을 참조하십시오.

+0

고마워! 그 작품! – dtoch

관련 문제