おそらくバイナリデータの長さを調べるのにstrlen関数を使っていらっしゃるのではないか
と推測します。違っていたらごめんなさい。
strlen関数は文字列の長さを取得するための関数ですので、データ内に0があるとそこで文字列が終了したと
考えてしまいます。
文字列データの基礎なので、試しに↓を実行したりしてしっかり理解することをお勧めします。
text = "HotSoupProcessor"
poke text, 3, 0 ; 4バイト目に0を書きこむと...
mes text ; 4バイト目以降が文字列として扱われません
mes strlen(text) ; 当然strlenも"Hot"の長さを返します
詳しくは付属マニュアルの「HSP3文字列のひみつ」(docs/hsp3str.htm)の
「文字列のしくみ」を参照してください。
peek関数は0だろうがなんだろうが大丈夫ですので、exist命令など他の手段で
バイナリデータの長さを指定すれば大丈夫なはずです。