June 2026
Intermediate
804 pages
8h 21m
Japanese
きちんとした質問には1桁の2進数で答えられる。0か1、すなわちイエスかノーだ。
—— カール・セーガン
テキストデータも扱いが難しいが、バイナリデータはまた違った面白さがある。ただし、エンディアン(コンピュータのCPUがデータをバイトに分割する際の方法)や整数の符号ビットなどの概念を知っておかなければならない。データを抽出したり変更したりするために、バイナリファイル形式やネットワークパケットの細部に踏み込む場合もある。本節ではバイナリデータ処理の基礎を説明する。バイナリファイルの読み書きの方法は「20章 ファイル」で取り上げる。
今まで見てきたように、テキスト操作ツールは豊富に揃っている。それに比べて、バイナリデータのためのツールはずっと少ない。標準ライブラリにはCやC++の構造体に似たデータを処理するstructモジュールが含まれている。structを使えば、データ構造とバイナリデータを相互変換できる。
PNGファイルに含まれるデータを使って、この相互変換の仕組みを確認する。PNGはGIFやJPEGと並んで広く使われている画像形式である。ここではPNGデータから画像の幅と高さを抽出する小さなプログラムを作る。
素材としてはO'Reillyのロゴを使う。図18-1に示す小さなメガネザルである。
図18-1 O'Reillyのメガネザル
この画像のPNGファイルはWikipedia(https://bit.ly/orm-logo ...
Read now
Unlock full access