2014-02-12 2 views
0

문자열을 파일에 쓸 수 있도록 struct.pack을 사용하려고합니다.문자열과 함께 struct.pack 사용

File "----", line 166, in main 
struct.pack('>256s', *master_header) 
struct.error: pack expected 1 items for packing (got 256) 

지금, here에서 읽기 내가 바로를 사용하는 것 : 내가 할 때, 나는 다음과 같은 오류가 발생합니다. 내 문자열에 256 바이트/문자를 가져오고 있음을 지정합니다.

버전 3.3.3을 사용하고 있습니다.

+0

왜 '*'를 추가하나요? – kennytm

+0

"그래서 문자열을 파일에 쓸 수 있습니다."- 문자열을 가지고 있고, 파일에 쓰고 싶거나 다른 것을 가지고 싶습니다. 문자열을 써서 쓸 수 있도록하고 싶습니다. 파일로? – user2357112

+0

struct.pack을 사용하여 이진 문자열에 압축하려는 256 바이트 문자열이 있습니다. – zdc000

답변

0

documentation는 말한다 :

For the 's' format character, the count is interpreted as the size of the string, not a repeat count like for the other format characters; for example, '10s' means a single 10-byte string, while '10c' means 10 characters.

그래서, >256s 256 바이트 단일 문자열을 기대하고있다. master_header이 이미 해당 문자열 인 경우 없이 struct.pack으로 전달하십시오.

호출 사이트에서 *을 사용하면 문자열 자체가 해당 구성 문자로 압축 해제됩니다. 문자열은 반복 가능합니다. 결과적으로 struct.pack은 256 개의 개별 문자를 인수로 사용하여 관찰 된 오류가 발생합니다.

+0

master_header는 256 바이트 길이의 단일 문자열입니다. – zdc000

+0

@ zdc000 그럴 경우'*'를 잃어 버리십시오. – user4815162342

관련 문제