Rebol 2 では、to char!
追加などのバイナリの操作で使用できる、実質的に 1 バイトのものを生成するために使用できます。
>> buffer: #{DECAFBAD}
>> data: #{FFAE}
>> append buffer (to char! (first data))
== #{DECAFBADFF}
理にかなっているようです。しかし、Rebol 3 では、何か違うことがわかります。
>> append buffer (to char! (first data))
== #{DECAFBADC3BF}
これは、単一文字を単一バイトとしてモデル化しないためです (Unicode のため)。したがって、(255) の整数値はfirst data
2 バイトのシーケンスに変換されます。
>> to char! 255
== #"ÿ"
>> to binary! (to char! 255)
== #{C3BF}
そのCHARを考えると!は Rebol 3 のバイトと同等ではなくなり、BYTE もありません! datatype が追加されました(BINARY! は、STRING! が一連の CHAR! であるのと同じように、一連の BYTE!s と見なすことができるように)、この種の状況についてはどうすればよいでしょうか?