【发布时间】:2013-01-18 18:40:14
【问题描述】:
在 Rebol 2 中,可以使用 to char! 来生成有效的单字节,您可以在二进制操作中使用,例如追加:
>> buffer: #{DECAFBAD}
>> data: #{FFAE}
>> append buffer (to char! (first data))
== #{DECAFBADFF}
似乎很明智。但是在 Rebol 3 中,你会得到不同的东西:
>> append buffer (to char! (first data))
== #{DECAFBADC3BF}
这是因为它不会将单个字符建模为单个字节(由于 Unicode)。所以first data(255)的整数值被翻译成一个两字节的序列:
>> to char! 255
== #"ÿ"
>> to binary! (to char! 255)
== #{C3BF}
鉴于那个 CHAR!不再等同于 Rebol 3 中的一个字节,也没有 BYTE!添加了数据类型(使得 BINARY! 可以被视为一系列这些 BYTE!就像 STRING!是一系列 CHAR!),对于这种情况该怎么办?
【问题讨论】:
标签: unicode utf-8 bytearray rebol rebol3