이미지 파일에 이상한 문자는 무엇입니까?

이미지 파일에 이상한 문자는 무엇입니까?

그래서 저는 Linux를 처음 접했고 기본적인 명령을 배우고 있습니다. 또한 내부적으로 어떻게 작동하는지 알고 싶었기 때문에 cat 및 nano 명령을 배운 후 이미지에 해당 명령을 사용해 보았는데 다음과 같은 이상한 기호가 모두 나타났습니다(linux mint).

nano 사용 후 이미지(index.jpeg)를 파일로 활용

Kali에서도 시도했는데 동일한 결과를 얻었으므로 이미지가 비트 수준에서 저장되는 방식과 관련이 있다고 생각하지만 다시 시작 부분에 있으며 이에 대한 설명을 찾을 수 없습니다. 이 기호가 정확히 무엇을 의미하는지입니다.

답변1

모든 파일은 1과 0으로 구성되며 각각을 비트라고 합니다. "바이트"는 8비트입니다. 8비트의 경우 1과 0의 조합이 256개 가능합니다.

일반 텍스트 파일의 데이터(즉, nano편집할 데이터(터미널에서 사용할 것으로 예상되는 출력 cat))는 바이트로 나뉩니다. 일반적으로 파일의 각 문자는 1바이트를 구성합니다. 예를 들어, ASCII 인코딩에서 문자 "A"는 바이트 01000001입니다. 일부 문자 인코딩(예: UTF-8)은 256자 이상을 포함해야 하기 때문에 문자를 표현하기 위해 여러 바이트를 사용하지만 여전히 파일을 바이트로 변환합니다. (개행을 위한 "Control-J"와 같은 "제어 문자"에 대한 바이트도 있습니다.)

이미지는 텍스트 파일이 아닌 바이너리 파일입니다. 해당 비트는 바이트로 나눌 수도 있지만 이러한 바이트는 문자/문자를 나타내기 위한 것이 아닙니다.

텍스트가 아닌 파일이 텍스트 파일로 열리면 텍스트 편집기는 바이너리 파일의 바이트를 문자를 나타내는 것처럼 해석하려고 시도합니다. 그렇게 할 의도가 아니기 때문에 바이너리 파일의 바이트와 파일이 실제로 텍스트 파일인 경우 동일한 바이트가 나타내는 문자 사이에는 상당히 큰 무작위 상관 관계가 있습니다. 그러나 이것이 nano가 파일을 해석하려고 시도하는 것이므로 임의의 문자를 얻게 되며 그 중 대부분은 일반적으로 인쇄할 의도가 없는 제어 문자이므로 이상한 결과가 발생합니다.

어쨌든, 나는 무슨 일이 일어나고 있는지 이해하는 방법입니다. 나는 컴퓨터 과학자가 아니므로 필요한 경우 댓글 작성자가 내 답변을 개선할 수 있기를 바랍니다.

당연히 이미지를 편집하려면 텍스트 편집기가 아닌 gimp나 krita 같은 이미지 편집기를 사용해야 합니다. 나는 당신이 바이너리 편집기나 16진수 편집기 등을 사용한다고 가정할 수 있지만, 그러기 위해서는 이미지 형식이 나타내는 데이터를 비트와 바이트로 변환하는 방법에 대한 매우 상세한 이해가 필요합니다. 이는 이미지 형식에 따라 다르다고 가정합니다.

관련 정보