텍스트 편집기로 이진 파일을 열 때 왜 이진 코드가 표시되지 않습니까? 예를 들어, 텍스트 편집기로 이미지를 열면 이상한 문자와 사람이 읽을 수있는 문자가 표시됩니다. 그러나 이미지는 바이너리로 인코딩되어야합니다.
텍스트 편집기로 이진 파일을 열 때 왜 이진 코드가 표시되지 않습니까? 예를 들어, 텍스트 편집기로 이미지를 열면 이상한 문자와 사람이 읽을 수있는 문자가 표시됩니다. 그러나 이미지는 바이너리로 인코딩되어야합니다.
답변:
이진 및 텍스트 데이터는 분리되지 않습니다 . 단순히 데이터 입니다. 그것들을 하나 또는 다른 것으로 만드는 해석에 달려 있습니다. 텍스트 편집기에서 이진 데이터 (예 : 이미지 파일)를 열면 선택한 해석 (텍스트)에 맞지 않기 때문에 대부분 의미가 없습니다 .
당신이 전화 텍스트 것은 A는 일부 가능한 파일 내용의 : 데이터 주어진에 있다는 문자 집합을 읽을 수있는 문자로 변환합니다.
예를 들어 ASCII 에서 128 개의 "허용 된"값 중 약 절반은 문자와 숫자이고 30은 문장 부호이고 나머지는 제어 문자 입니다. 후자의 그룹은 텍스트 파일에서 많이 사용되지 않으며 실제로 텍스트 표현이 좋지 않습니다. 그중 일부는 탭 및 줄 바꿈 문자이며 텍스트 편집기는 이미 창의적으로 표시해야합니다.
일부 텍스트 편집기에는 공백을 명시 적으로 표시하는 옵션이 있습니다. 그런 다음 정규 형식화 동작 ( 이러한 문자 의 해석 일뿐 아니라)과 함께 실제로 문자로 그려집니다 .
순수 ASCII는 128 개의 값만 해석합니다. 이 정보를 저장하는 데 사용 된 바이트는 각각 256 개의 가능한 값을 가지므로 가능한 값의 절반은 ASCII에서 허용되지 않습니다. 예를 들어 라틴어 1과 같은 지역별 문자 집합에 사용되지만 ASCII에서는 정의되지 않습니다. ASCII 만 처리 할 수있는 텍스트 뷰어에는 유용한 표현이 없습니다.
이진 데이터 는 일반적으로 텍스트로 해석되지 않습니다. 따라서이 파일에서 가능한 모든 바이트 값 이 일반적으로 발견됩니다. 다른 모든 것은 낭비 될 것입니다 (그리고 텍스트를 잘 압축 할 수있는 이유입니다). 이미지 파일 형식은 복잡하므로 일반적으로 텍스트로 볼 필요가 없으므로 읽을 필요가 없습니다.
가능한 모든 값을 읽을 수있는 문자에 매핑하는 공통 데이터 해석 (문자 세트)이 없으므로 텍스트를 읽을 수 없으므로 의미가 없으므로 주요 부분은 횡설수설로 표시됩니다.
16 진 편집기는 데이터에 대해 다른 표현을 선택합니다. 각 바이트는 2 개의 16 진 숫자 로 표시됩니다 . 이것은 단지 다른 표현이며 사람이 쉽게 읽을 수있는 문자 집합을 가진 표현입니다. 256 개의 가능한 모든 바이트 값은 2 개의 16 진수로 표현 될 수 있습니다.
이진 데이터를 16 진수로 쉽게 매핑 할 수 있으며 그 반대도 가능합니다 (1 진 16 진수로 / 이진 4 진 숫자). 이진에는 숫자 당 정보가 거의 없으므로 16 진수는 일반적으로 사람이 바이너리를 읽는 데 선호되는 방법입니다. 다른 표현을 선호하는 이유.
일부 텍스트 편집기에는 16 진 편집기 모드 와 일부 휴리스틱이있어 파일이 텍스트인지 2 진인지를 판별하고 자동으로 하나의 모드를 선택합니다. 그러나 이것은 올바르게 이해하기 어려울 수 있으며 파일의 특정 속성이 아닌지 여부를 나타냅니다.
일부 FTP 클라이언트는 텍스트 데이터에 사용할 파일 엔딩을 지정하도록 요청합니다 . Windows는 CR/LF
Linux 및 Unix (Mac OS X; 포함) 와는 다른 줄 끝 문자 시퀀스 ( )를 사용하므로 이러한 프로그램은 연결된 컴퓨터의 OS와 일치하도록 파일 내용을 변경합니다 LF
.
그것은 맥락과 해석과 관련이 있습니다. 컴퓨터에는 고전압 및 저전압 패턴 또는 디스크의 자화 영역이 있으며, 해석 방법을 결정할 때만 의미가 있습니다.
다른 상황에서, 패턴 낮음-낮음-낮음-낮음-낮음-낮음-높음은 낮음-낮음-낮음-낮음-높이가 65 인 대문자 'A', 하늘색, 고객이 커피를 주문한 날짜, '3 월'을 의미 할 수 있습니다 6 번가 또는 전혀
그래픽 프로그램에서 이미지 파일을 열면 이미지 파일을 이미지로 해석하고 이미지 형식을 나타내는 패턴, 이미지 크기를 나타내는 패턴 등을 알게됩니다.
텍스트 편집기에서 이미지 파일을 열면 이미지 파일이 텍스트로 처리됩니다. 이것은 컴퓨터에서 실제로 진행되고있는 것에 훨씬 가까운 매우 간단한 형식이지만 여전히 해석이 진행되고 있습니다. 특히, 거의 모든 패턴은 특정 문자, AZ와 같은 정상적인 문자, 이상한 문자로 해석됩니다. 몇 가지 패턴은 문자로 표시되지 않고 대신 줄 바꿈, 탭과 같은 기본 형식으로 처리됩니다.
(Unicode 및 UTF-8과 같은 텍스트 인코딩과 같은 상황에서는 상황이 약간 복잡하지만 단순성을 위해 여기에서는 다루지 않습니다.)
텍스트 편집기에서 이진 파일을 연 경우 변경하면 파일 내용의 정상적인 해석이 완전히 중단되므로 파일을 망치고 사용할 수 없게되므로 변경하지 않도록주의하십시오.
간단한 예로, 텍스트 편집기로 열린 이미지 파일을 고려하십시오.
이미지는 3 픽셀 너비의 사각형과 각 사각형 사이에 1 픽셀의 회색 테두리가있는 간단한 체스 패턴입니다. -3 개의 검은 색 픽셀, 회색 테두리 픽셀, 3 개의 흰색 픽셀, 회색 테두리 픽셀, 반복
해당 이미지의 첫 번째 줄은 다음과 같은 네 번의 값을 갖습니다.
Black Black Black Gray White White White Gray
0x000000 0x000000 0x000000 0x7F7F7F 0xFFFFFF 0xFFFFFF 0xFFFFFF 0c7F7F7F
(이진이 아닌 16 진의 경우-이진의 문자열 길이는 4 배입니다. 0x7F는 0b01111111로 대체됩니다)
텍스트 편집기에서 해당 문자열을로드하면 다음과 같은 텍스트가 표시됩니다.
[Nul] [Nul] [Nul] [Nul] [Nul] [Nul] [Nul] [Nul] [Nul] [Del] [Del] [Del] [Blank] [Blank] [Blank] [Blank] [Blank] ] [빈] [빈] [빈] [빈] [델] [델] [델]
0x00은 Null 값의 ASCII 코드이므로 검은 색 픽셀 (24 비트 BMP에서)의 값을 얻으려면 3 번 작성해야하며 3 개의 검은 색 픽셀이 있습니다. 그런 다음 0x7F는 Delete의 ASCII 코드이며 회색 픽셀을 얻으려면 세 번이 필요합니다. 0xFF는 확장 ASCII 세트 에서조차도 특히 ASCII 코드의 가치가 없으며 3 개의 흰색 픽셀을 얻으려면 9 번 작성해야합니다. 완료하면 회색 픽셀을 작성하기 위해 세 번 더 삭제가 발생합니다.
더 유용하게 설명 할 수있는 다른 방법은 반대의 예입니다. 텍스트 편집기에서 열 때 0을 얻기 위해 파일에 무엇을 써야합니까?
물론 0과 1의 ASCII 코드! 텍스트 편집기의 0은 값이 0 인 단일 비트로 저장되지 않고 값이 0b00110000 인 8 비트 또는 16 진 0x30으로 저장됩니다.
'0'의 ASCII 코드는 0x30이고 '1'의 ASCII 코드는 0x31이므로 체스 패턴을 0과 1로 저장하려는 경우 파일은 다음과 같습니다.
text editor:
10101010
01010101
10101010
01010101
Stored data (ASCII values for '1', '0' and 'new line'):
0x31 0x30 0x31 0x30 0x31 0x30 0x31 0x30 0x0D 0x30 0x31 0x30 0x31 0x30 0x31 0x30 0x31 0x0D 0x31 0x30 0x31 0x30 0x31 0x30 0x31 0x30 0x0D 0x30 0x31 0x30 0x31 0x30 0x31 0x30 0x31
이것보다 더 많은 것이 있습니다-파일에는 시작 및 중지와 메타 데이터 및 기타 모든 종류가 있지만 질문에 대한 교훈과 답은 다음과 같습니다.
파일의 처음 8 비트가 0b00110000이 아니면 문자 '0'의 ASCII 코드이므로 텍스트 편집기에서 '0'을 쓰지 않습니다. 파일의 첫 8 비트가 0b00110001이 아닌 한 문자 편집기는 문자 '1'의 ASCII 코드이므로 '1'을 쓰지 않습니다.
편집기는 일부 텍스트가 의미가 있는지 여부를 파악하기에 충분하지 않으므로 해당 기능이있는 경우 달리 지시하지 않는 한 모든 파일을 텍스트로 표시합니다. 다른 사람들이 지적했듯이 일부 편집기에는 16 진수 표시 기능이 있습니다.