perlでバイナリデータを読み込んで加工して元通りに書き戻したい

[上に] [前に] [次に]
GVC 1999/12/27(月) 14:48:03
perlでバイナリデータ(具体的には画像の高さとかのデータ)を読みこんで
加工して元通りに書き戻したいのです。
データはバイナリエディタとかでみると
00 00 00 3C
となっています。
読みこむ時には
$buf = ord( reverse( $buf ) );
としています。($bufには読みこんだデータ(00 00 00 3C)が入っている)
これで$bufは60になってこの値をいじってまた書き戻したいのですが
print OUT pack( "C", $buf );
として書き出して、バイナリエディタで見てみると
00 3C
となってしまいます。
本当は
00 00 00 3C
というふうにしたいのですが、、、、
どうすればいいでしょうか?

perlのバージョン 5.005_03(パッチなし)

B-Cus 1999/12/27(月) 15:28:13
> これで$bufは60になってこの値をいじってまた書き戻したいのですが
$buf の最後が 0x3c で、reverse して ord したから
先頭文字のASCIIコードを取ったところ、3c(16進)==60(10進) と
なっただけで、何も変換してないですけどいいんですか?

> pack( "C", $buf );
 pack("CCCC",$buf);
 pack("C*",$buf);
とか。

B-Cus 1999/12/27(月) 18:57:39
あ、とりあえず書き戻してみたが、うまくいかないってことね。
> pack("CCCC",$buf);
じゃダメか。
 pack("L",$buf);  # バイトオーダーに依存しそうな気も。
 pack("CCCC",0,0,0,$buf);
 pack("C*",0,0,0,$buf);

[上に] [前に] [次に]