developer tip

이 사람이 Microsoft Paint로 "Hello World"를 어떻게 코딩 했습니까?

optionbox 2020. 8. 24. 08:11
반응형

이 사람이 Microsoft Paint로 "Hello World"를 어떻게 코딩 했습니까?


지난 며칠 동안 이것을 보았고 어떻게 작동하는지 알 수 없습니다. 제가 이야기하는 비디오는 여기에 있습니다 .

그것은의 대답은 최고 등급 이 스택 오버플로 문제에서을 : 왜이 세 가지 컴파일러에 의해 거절이 프로그램입니까?

이 비트 맵이 "Hello World"용 C ++ 프로그램을 어떻게 표시 할 수 있습니까?


BMP (DIB) 이미지는 헤더와 압축되지 않은 1 색 데이터 로 구성됩니다 (24bpp 이미지의 경우 픽셀 당 3 바이트, 역행 순서로 저장되고 4 바이트 행 스트라이드로 저장 됨).

색상 데이터의 바이트는 색상을 나타내는 데 사용됩니다 (즉, 파일 형식 2 에서 "필수"되는 항목은 없으며 모두 각 픽셀의 색상에서 가져옴). 픽셀 색상과 작성된 바이트 간에는 완벽한 1 : 1 대응이 있습니다. 파일에서; 따라서 완벽하게 선택된 색상을 사용하면 실제로 파일에 원하는 모든 것을 쓸 수 있습니다 (헤더 제외).

생성 된 파일을 메모장에서 열면 색상 데이터가 텍스트로 표시됩니다. BM파일 형식에 따라 지정된 헤더 ( 텍스트 시작 부분)에서 여전히 명확하게 볼 수 있습니다 .

제 생각에이 비디오는 다음과 같은 방식으로 수행되었습니다. 먼저 작성자는 비트 맵에 필요한 크기를 계산하고 간단한 패턴으로 확장되는 색상으로 채워진 올바른 크기의 DIB 파일을 만들었습니다 (예 : 모든 바이트 65 => 'A'); 그런 다음 동영상에 표시된 것처럼 이러한 패턴을 "페이로드"코드로 대체했습니다.

그러나 메모장으로 모든 것을 수작업으로 만드는 것은 불가능하지 않습니다. 색상 선택기 대화 상자, ASCII 테이블 및 DIB 형식에 대한 기본 지식을 사용하여 수행 할 수 있지만 훨씬 느리고 오류가 발생하기 쉽습니다.

DIB 형식에 대한 추가 정보


  1. RLE 압축 DIB가 있지만이 경우 압축되지 않은 비트 맵이 사용됩니다 (어쨌든 실제로 거의 사용되지 않음).
  2. 스트라이드를 제외하고는 4 바이트의 배수 행을 사용하여 피했습니다.

만우절 질문 중 하나에 대한 답을 언급하고 있다고 가정합니다.

내 생각 엔 각 픽셀에는 이진 표현이 있습니다. 그리고 소스 코드의 각 문자에는 이진 표현이 있습니다.

프로그램을 만든 사람은 각 문자에 해당하는 이진 표현이있는 각 픽셀의 색상을 계산 했어야합니다.


이론적 인 컴퓨터 과학의 관점에서 보면 모든 프로그램이 그러한 방식으로 작성 될 수 있는지 묻는 것이 흥미로울 것입니다. 비트 맵으로 볼 때 실제로 동일한 작업을 수행하는 소스 코드를 볼 수 있습니다. 그러한 결과에 진지하게 관심이 있다면, 예를 들어 Kleene의 고정 소수점 정리에 대해 읽어보십시오 .

이미지로서의 프로그램은 코드 난독 화의 한 형태로 볼 수도 있습니다. 특히 실용적이지 않았다 ...

참고 URL : https://stackoverflow.com/questions/5588649/how-did-this-person-code-hello-world-with-microsoft-paint

반응형