문제

바이트로 저장된 데이터가 있다고 가정합니다. 예를 들어:

0110001100010101100101110101101

어떻게 보관할 수 있습니까? 인쇄 가능 텍스트? 명백한 방법은 모든 0을 캐릭터 '0'로, 그리고 1마다 문자 '1'로 변환하는 것입니다. 사실 이것은 내가 현재하고있는 일입니다. 정보를 잃지 않고 어떻게 더 단단히 포장 할 수 있는지 알고 싶습니다.

나는 비트를 8 개 그룹으로 ASCII로 변환하는 것을 생각했지만 일부 조합은 해당 형식으로 허용되지 않습니다. 다른 아이디어가 있습니까?

도움이 되었습니까?

해결책

Base64와 같은 "안전한"문자 만 사용하는 인코딩은 어떻습니까?
http://en.wikipedia.org/wiki/base64

편집 : 데이터를 텍스트 파일에 안전하게 저장하고 싶다고 가정합니까?

Python 2.X에서는 문자열이 정상이어야합니다 (Python은 Null 종료 문자열을 사용하지 않으므로 걱정하지 마십시오).

3.x에서 바이트와 바이트 객체를 확인하십시오.http://docs.python.org/3.0/library/stdtypes.html#bytes-methods

다른 팁

당신이 무슨 말을하는지 잘 모르겠습니다.

>>> sample = "".join( chr(c) for c in range(256) )
>>> len(sample)
256
>>> sample
'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\
x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&\'()*+,-./0123456789:;<=>?@ABC
DEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\x80\x81\x82\x83
\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97
\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab
\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf
\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3
\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7
\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb
\xfc\xfd\xfe\xff'

문자열 sample 256 개별 바이트를 모두 포함합니다. "비트 조합 ... 허용되지 않은"것과 같은 것은 없습니다.

만들다 인쇄 가능, 간단히 사용하십시오 repr(sample) -ASCII가 아닌 문자가 탈출됩니다. 위에서 볼 수 있듯이.

표준을 시도하십시오 정렬 모듈 또는 구조 기준 치수. 이러한 지원은 공간 효율적인 방식으로 바이트를 저장하지만 비트를 직접 지원하지는 않습니다.

당신은 또한 시도 할 수 있습니다 http://cobweb.ecn.purdue.edu/~kak/dist/bitvector-1.2.html 또는 http://ilan.schnell-web.net/prog/bitarray/

Python 2.X의 경우 가장 좋은 방법은 문자열에 저장하는 것입니다. 해당 문자열이 있으면 Python과 함께 제공되는 Base64 모듈을 사용하여 String을 안전한 ASCII 값으로 인코딩 할 수 있습니다.

import base64
encoded = base64.b64encode(bytestring)

이것은 "1"및 "0"을 저장하는 것보다 훨씬 더 압축됩니다.

Base64 모듈에 대한 자세한 내용은 파이썬을 참조하십시오. 문서.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top