파이썬 담아두기

파이썬3 바이너리 값 편집

nightohl 2018. 9. 23. 23:07
반응형

[파이썬3 바이너리 값 편집]

[ Python3 기준 ]


파일의 바이너리 값을 편집하고자 한다.

ex) 파일의 Data 길이를 나타내는 Header 값을 수정하고자 하는 경우!


파이썬 3에서는 참 편리한 함수를 제공하여 편집이 용이하다.


우선 파일을 바이너리 모드로 열어준다. (b 추가)


바이너리 모드이므로 여기서 read() 함수를 호출하면 type : <class 'bytes'>으로 읽힌다.

bytes 타입으로 산술연산을 할 수 없으므로 int로 변환시켜 계산한다.

int.from_bytes(bytes, byteorder, signed=) 함수를 사용하자.


 bytes 

 bytes-like-object 또는 iterable producing bytes가 들어가야한다.

 byteorder

 endian 방식을 표기하는데, 'big' or 'little' 중 선택한다.

 signed

  two's complement가 사용됐는지 여부를 표시한다.

  signed=True (signed도 같이 적어줘야함, False는 생략가능)



int로 변환하여 원하는 연산을 수행한 후에 파일에 저장할 때는 다시 bytes type으로 바꿔줘야한다.

int.to_bytes(bytes, length, byteorder) 함수를 사용하자.


 bytes

 bytes-like-object 또는 iterable producing bytes

 length

 변환될 길이를 명시.

 byteorder

 endian 방식을 표기하는데, 'big' or 'little' 중 선택한다.



파일에서 읽어온 bytes b'AABBCCDD'를 int로 변환한 결과 = 2864434397

여기에 1을 더한 후 다시 bytes로 변환한 결과 = b'AABBCCDE'


bytes를 이용한 연산이 원하던 대로 수행되었음을 알 수 있다. :)


반응형