Perlでバイナリデータの操作(たとえば画像のピクセル部分の変更)をする場合
配列に一つ一つ数値を入れて操作するのと
スカラでデータをいっぺんにパック(?)して操作するのとでは
どちらがいいのでしょうか?

ようはC言語のchar配列の操作のようなことがしたいのですが。

A 回答 (1件)

パックって、packのことでしょうか?


まとめた形のまま、たとえばファイルに保存したり、読み出したり
するにはそれが便利だと思いますし、メモリも配列よりは
少なくなると思います。

しかし、配列のように個々の値を変えたりするなら、結局
unpackして配列として扱わなければならなくなりますね。

数値が整数と決まっているのなら、vecを使う手も考えられます。
vec($aaa, 0, 8) = 0xFF;
vec($aaa, 1, 8) = 0x3C;
vec($aaa, 2, 8) = 0xA3;
.....
と代入しておき、あとで$aaaから
vec($aaa, 1, 8) で、オフセット1の場所に入れた0x3Cの値を取り
出す、などということができます。これが一番メモリ効率としては
いいように思います。
詳しくは、perldoc -f vec をご覧ください。
    • good
    • 0

このQ&Aに関連する最新のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


このカテゴリの人気Q&Aランキング

おすすめ情報

カテゴリ