2007/05/20(日) [n年前の日記]
#8 [pc] _ファイルの先頭8バイトだけで画像のフォーマットを調べる
3バイト目と4バイト目の 0x0D 0x0A は、Windowsの改行コードになっています。ファイルがテキストモードで転送されていると、画像データの中のこの並びがすべてそれぞれのプラットフォームに合わせて変わってしまい、データが壊れてしまいます。この2バイトが 0x0D 0x0A になっているかを調べることで、改行コードの変換が行われて転送時にデータが壊れていないかがわかります。感動。PNGめ…やりおるわい…。(via ネタ元失念)
4バイト目の0x1Aは、MSDOSの元になったCP/Mのファイルシステムでファイルの終端を示していた値です。DOSプロンプトでTYPEコマンドを使ってファイル中身を表示すると、このコードがでできた場所をファイルの終端とみなしてそれ以降は表示されません。これはかなり実用性が低くてマニアックです。
5バイト目の 0x0A はUNIX系システムの改行コードです。3-4バイト目の 0x0D 0x0A 同様、改行コードが変換されていないかどうかを調べるためにあります。
[ ツッコむ ]
以上です。