일부 정보를 텍스트 파일 (.txt 형식)로 저장하려고합니다. 파일 크기를 줄이기 위해 16 비트 이진수의 각 비트를 사용하여 정보를 나타냅니다. 예를 들어, 16 비트 이진수 인 0000 0001 1000 1111
의 경우 각 비트의 의미가 다릅니다. 어떤 ASCII 문자는 8 비트 바이너리 수와 동일하기 때문에, 그래서 두 개의 문자 내 16 비트 숫자로 변환하고 저장하려면 :16 비트 2 진수를 2 문자로 변환하여 텍스트 파일로 저장할 수 있습니까?
uint16_t a;
a = 13 << 10 | 1 << 3 | 2;// a is a 16bit binary number
char b, c;
b = (char)(a>>8);
c = (char)a;// convert a to two characters
가 그럼 난 텍스트 파일로 b와 c를 저장합니다. 나중에 텍스트 파일을 읽을 때이 두 문자를 16 비트 2 진수로 변환하여 정보를 얻습니다. 문제는 일부 ASCII 문자가 인쇄 가능하지 않다는 것을 알고 있기 때문에 문제가 있는지 궁금합니다. 어떤 대답이라도 대단히 감사하겠습니다!
인쇄 할 수없는 문자는 인쇄하려고 할 때만 문제가됩니다. 또는 인쇄 가능한 문자 만 처리 할 수있는 시스템을 통해 파일을 실행하십시오. 모든 사람들이 그 파일을 바이너리 데이터로 취급하는 한 (실제로이 ASCII라고 부르지 않아야한다. – Thilo
답변 해 주셔서 감사합니다! 문자를 txt 파일에 저장 한 다음 예를 들어 winzip 소프트웨어를 사용하여 압축합니다. 이렇게 할 수 있는지 확실하지 않습니다. – LiuGui
이 파일을 바이너리 파일이라고하고 다른 확장자 인 ".bin"을 사용하면 많은 혼란을 피할 수 있다고 생각합니다. 네가 할 수없는 이유가 있니? –