documents:perl:perl-0001
Perlでバイナリファイルを作るサンプルコード
2010年11月19日 20時19分22秒
ファイル名書けって怒られた(´・ω・`)
ソース
- s1.pl
## 4桁の16進数を読み込んでバイナリ形式で書き出すサンプル binmode(STDOUT); while(<STDIN>) { chomp($_); $code = uc( $_ ); printf("%c%c", unpack("C", pack("H2", substr($code,0,2))), unpack("C", pack("H2", substr($code,2,2))) ); }
標準入出力を使うことを想定した。
入力データ
- input.txt
8140 8150 8160 8150 8147
いわゆるCP932(SJIS)の文字を5個並べた。
実行結果
D:\work>perl s1.pl < input.txt  ̄~ ̄; D:\work>
説明
標準出力をバイナリモードにするため binmode()でSTDOUTを指定した。 次に標準出力へ1バイトずつ書き出すために pack()で16進数文字列2桁を1バイトの数値に変換、それを unpack()で“文字”に変換する。あとは printf()の書式で %c を指定した。 ※2バイトのコードの上位・下位バイトを各々長さ1バイトの文字として編集した
旧ページコメント
- たのむ - 名無し (2010年11月19日 17時09分18秒)
- ん?なにを? - 努力中の人 (2010年11月19日 20時19分22秒)
documents/perl/perl-0001.txt · 最終更新: 2024/11/01 16:30 by k896951