努力したWiki

推敲の足りないメモ書き多数

ユーザ用ツール

サイト用ツール


documents:proglang:perl:perl-0001

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
documents:proglang:perl:perl-0001 [2026/05/08 11:54] – ↷ documents:perl:perl-0001 から documents:proglang:perl:perl-0001 へページを移動しました。 k896951documents:proglang:perl:perl-0001 [2026/05/17 15:00] (現在) – [Perlでバイナリファイルを作るサンプルコード] k896951
行 1: 行 1:
 +
 +====== 004.Perlでバイナリファイルを作るサンプルコード ======
 +
 +2010年11月19日 20時19分22秒
 +
 +ファイル名書けって怒られた(´・ω・`)
 +
 +==== ソース ====
 +
 +<code perl 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))) );
 +}
 +</code>
 +
 +標準入出力を使うことを想定した。
 +
 +==== 入力データ ====
 +
 +<code txt input.txt>
 +8140
 +8150
 +8160
 +8150
 +8147
 +</code>
 +
 +いわゆるCP932(SJIS)の文字を5個並べた。
 +
 +==== 実行結果 ====
 +
 +
 +<code>
 +D:\work>perl s1.pl < input.txt
 +  ̄~ ̄;
 +D:\work>
 +</code>
 +
 +==== 説明 ====
 +
 +標準出力をバイナリモードにするため binmode()でSTDOUTを指定した。
 +次に標準出力へ1バイトずつ書き出すために pack()で16進数文字列2桁を1バイトの数値に変換、それを unpack()で“文字”に変換する。あとは printf()の書式で %c を指定した。
 +※2バイトのコードの上位・下位バイトを各々長さ1バイトの文字として編集した
 +
 +===== 旧ページコメント =====
 +
 +  * たのむ - 名無し (2010年11月19日 17時09分18秒)
 +  * ん?なにを? - 努力中の人 (2010年11月19日 20時19分22秒)
 +
 +{{tag>Perl 技術資料 バイナリファイル}}
  
documents/proglang/perl/perl-0001.txt · 最終更新: by k896951

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki