この人物はMicrosoft Paintで「Hello World」をどのようにコーディングしましたか?


99

私はこの数日以内にこれを見たばかりで、それがどのように機能するのか理解できません。私が話すビデオはここにあります

これ、このStack Overflowの質問からの最高評価の回答です。なぜこのプログラムが3つのコンパイラによって拒否されたのですか?

このビットマップはどのようにして「Hello World」のC ++プログラムを表示できますか?


7
ビットマップ値は、ファイル内の単なるビットです。これらのビットをASCiiとして解釈すると、何かが表示されます。ビットを慎重に選択すると、ビットマップに(ファイルヘッダーを法として)文字または構成を書き込むことができます。理解してはいけないことは何ですか?世界最悪の編集者のように、それはばかげたことです。
Thomas M. DuBuisson、2011

3
価値があるの、ソースコードがイメージとして表現されるプログラミング言語が少なくとも1つあることです。この特定の画像がうまく機能するわけではありませんが...
Michael Madsen

1
あなたが探していたスレッドstackoverflow.com/questions/5508110/…–
phwd

6
そのアニメーションGIFは私のブラウザ(IEとChrome)を殺している-アニメーションGIFよりもビデオを投稿するより良い方法があります。
MusiGenesis 2011

3
私は2011年の問題を覚えてどのように@MusiGenesisああ、
チャールズクレイトン

回答:


56

BMP(DIB)画像は、ヘッダーとそれに続く非圧縮1色データで構成されます(24 bpp画像の場合、ピクセルあたり3バイトで、行の逆順で格納され、行のストライドは4バイトです)。

色データのバイトは色を表すために使用され(つまり、ファイル形式2によって「必須」にされず、すべてが各ピクセルの色から取得されます)、書き込まれたピクセルの色とバイトの間に完全な1:1の対応があります。ファイル内; したがって、完全に選択された色を使用して、実際にファイルに必要なものを書き込むことができます(ヘッダーを除く)。

生成されたファイルをメモ帳で開くと、カラーデータがテキストとして表示されます。ヘッダー(BMテキストの先頭から先頭までの部分)からは、ファイル形式で指定されていることがはっきりとわかります。

私の意見では、このビデオはこのように行われました:最初に著者はビットマップに必要なサイズを計算し、単純なパターンに展開する色で満たされた正しいサイズのDIBファイルを作成しました(たとえば、すべてのバイト65 => 'A'); 次に、ビデオに示すように、そのようなパターンを「ペイロード」コードに置き換えました。

ただし、すべてをメモ帳で手作りすることは不可能ではないことに注意してください。カラーチューザダイアログ、ASCIIテーブル、DIBフォーマットの基本的な知識があれば、それを実行できますが、はるかに時間がかかり、エラーが発生しやすくなります。

DIB形式の詳細


  1. RLEで圧縮されたDIBがありますが、この場合は非圧縮のビットマップが使用されます(とにかくめったに使用されません)。
  2. ストライドを除いて、4バイトの倍数の行を使用することは避けられました。

19

エイプリルフールの質問への回答を参照していると思います。

私の推測では、各ピクセルにはバイナリ表現があります。そして、ソースコードの各文字には、バイナリ表現があります。

プログラムを作成した人は、各文字に対応するバイナリ表現を持つ各ピクセルの色を計算したはずです。


7
+1:最後に、バイトはバイトです。メモ帳はそれらをテキストの文字として解釈し、mspaintはビットマップ内のピクセルとして解釈します。先頭の「ジャンク」テキストは、追加の画像情報です(おそらく解像度、バージョンなど)。
Chris Schmich

6

理論的なコンピューターサイエンスの観点からは、すべてのプログラムがビットマップとして表示され、同じことを行うソースコードを実際に見られるような方法で作成できるかどうかを尋ねることは興味深いでしょう。このような結果に真剣に関心がある場合は、たとえばクリーネの不動点定理について読んでください。

Program-as-an-imageは、コードの難読化の形式と見なすこともできます。特に実用的ではなかった...

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.