次の点を考慮してください。
>> bin: to-binary {Rebol}
== #{5265626F6C}
>> parse/all bin [s: to end]
== true
s
バイナリ シリーズの先頭をキャプチャし、BINARY! 型であると予想します。Rebol 3 では次のようになります。
>> type? s
== binary!
>> s == bin
== true
Rebol 2 では、解析によってデータが文字列に変換されている必要があるようです (または、少なくともバイナリを文字列として "イメージ化" している必要があります! 内部では、等しい比較ではありません)。
>> type? s
== string!
>> s == bin
== false
Rebol 2 は Unicode ではないため、バイナリ バイト文字列と文字列は基本的に同等です。しかし、Rebol 3 の Unicode では、次のように記述した場合、非常に異なる動作になる可能性があると思います。
parse/all to-string bin [s: to end]
複数のバイトシーケンスを文字列エンコーディングに解釈し始めるため、本当に必要なものが未解釈のバイトである場合は機能しません。:-(
BINARY! の解析において、Rebol 2 または Rebol 3 のどちらでも同じように機能するコードを書きたい場合、これをどのように回避しますか? (もちろん、Rebol 2 を 3 のように機能させるのが理想的です。)