2014-04-18 4 views
0

나는 "Encode the file by adding 5 to every byte in the file"에게 요청을했습니다. 나는 이진 읽기 바이너리로 파일을 열어 보았지만, 문자열의 시작 부분에 b를 추가했다. 나는 그것이 문장의 기대가 무엇인지 생각하지 않는다. 나는 피클을 들여다 보았지만 그 중 하나가 맞다고 생각하지 않는다.파일의 바이트를 변경 하시겠습니까?

그 밖의 무엇이 의미 할 수 있습니까? 가능한 해결책에 대한 아이디어가 있습니까?

+0

어떤 버전의 파이썬을 사용하고 있습니까? 파이썬 3에서는'b' 접두사가 붙은 문자열처럼 출력되는'bytes' 타입을 인덱스 화하거나 반복하여 정수를 얻을 수 있습니다. 문제는'output_file.write (bytes (input_file.read())의 b에 대해 b + 5)'와 같이 간단 할 수 있습니다. – Blckknght

답변

2

실제로 문자열의 시작에 b를 추가하지 않습니다 - b는 그것이 bytes 유형,하지 str 알고 있도록 그것을 나타내는 때 파이썬 문자열에두고 단지 마커입니다. 바이트는 실제로는 숫자 (0-255)이므로 바이트 개체를보고 각 값을 가져 와서 해당 숫자와 숫자를 알아 내고 5를 더합니다.

힌트 -이 작업은 바이트를 저장하려면 bytearray을 사용하기로 결정했습니다.

관련 문제