考虑以下:
>> bin: to-binary {Rebol}
== #{5265626F6C}
>> parse/all bin [s: to end]
== true
我希望s
已经捕获了二进制系列的头部,并且是 BINARY 类型!在 Rebol 3 中是这样的:
>> type? s
== binary!
>> s == bin
== true
在 Rebol 2 中,似乎 parse 必须将数据转换为字符串(或者至少将二进制“成像”为字符串!在后台,而不是比较相等)
>> type? s
== string!
>> s == bin
== false
因为 Rebol 2 不是 Unicode,所以二进制字节串和字符串基本上是等价的。但是使用 Rebol 3 的 Unicode,我猜如果你写的话,你最终会得到非常不同的行为:
parse/all to-string bin [s: to end]
因为它会开始将多个字节序列解释为字符串编码,如果您真正想要的是未解释的字节,这将不起作用。:-(
如果有人想编写在 Rebol 2 或 Rebol 3 中同样适用于解析 BINARY! 的代码,你将如何解决这个问题? (当然,理想情况下,让 Rebol 2 的行为更像 3。)