Drag & Drop

바이너리 텍스트 모드

려리군 2009. 8. 19. 09:33

출처 : http://cafe.daum.net/withlearn/G5j/23668?docid=yRG|G5j|23668|20071113223915&q=%B9%D9%C0%CC%B3%CA%B8%AE%20%C5%D8%BD%BA%C6%AE&srchid=CCByRG|G5j|23668|20071113223915

1바이트씩 처리하는것은 바이너리 모드나 텍스트모드나 전혀 차이점이 없습니다. 차이점을 예를들자면 한글로 "가나다"를 저장한다고 치면 텍스트 모드에서는 정상적으로 "가나다"라고 저장이 되나 바이너리 모드로 저장을 하게 되면 "가나다"에 해당하는 총 6바이트의 아스키 코드가 저장됩니다.(널문자는예외로 둡니다) 바이너리 모드로 저장된 파일을 메모장으로 열면 전혀 알수 없는 데이터가 나옵니다. 단 영문일 경우엔 정상적으로 나옵니다. 아스키 코드와 1:1 매칭이 되기 때문이죠.. 

윈도(도스)계열에서는 '\n'을 입출력할 때, 차이를 보입니다. 이진모드에서는 '\n'으로 읽고 쓰지만, 텍스트 모드에서는 '\n'을 0x0D(\r),0x0A(\n)로 저장하고, 0x0D 0x0A를 '\n'으로 읽습니다. 물론 0x0A 하나만 있으면 0x0A('\n')로 읽습니다. 또 한가지, 텍스트 파일에서는 0x1A를 파일의 끝을 나타내는 문자로 처리합니다. 즉, 0x1A 문자 이후로 데이터가 있더라고 이미 EOF를 만난 것으로 간주됩니다. 바이너리 파일에는 파일 끝을 나타내는 문자가 따로 없습니다. feof()함수로 확인할 수있습니다.