Binary 如何转换二进制文件!干杯!在Rebol 2中?
很容易将字符转换为二进制:Binary 如何转换二进制文件!干杯!在Rebol 2中?,binary,char,rebol,Binary,Char,Rebol,很容易将字符转换为二进制: >> c: #"^(52)" == #"R" >> type? c == char! >> b: to-binary c == #{52} 但是如果我想走另一条路呢 >> c: to-char b ** Script Error: Invalid argument: #{52} ** Where: to-char ** Near: to char! :value 这适用于Rebol 3。转换为字符串,然后从字符串
>> c: #"^(52)"
== #"R"
>> type? c
== char!
>> b: to-binary c
== #{52}
但是如果我想走另一条路呢
>> c: to-char b
** Script Error: Invalid argument: #{52}
** Where: to-char
** Near: to char! :value
这适用于Rebol 3。转换为字符串,然后从字符串中提取第一个字符:
>> first to string! #{c3b6}
== #"ö"
请注意,这将二进制文件解码为UTF-8(Rebol 3中使用的默认Unicode编码)。您的原始问题,其中到char
对二进制文件有效代码>
>> c: #"^(52)"
== #"R"
>> type? c
== char!
>> b: to-binary c
== #{52}
>> c: to-char b
== #"R"
>> system/version
== 2.101.0.3.1
但是,它在REBOL2中不起作用。好的,它起作用了。但是,有没有一个根本原因可以解释为什么char不能在合适的二进制文件上工作代码>?这样做的目的不是太频繁地调用二进制文件到字符串的默认解码,而是让用户明确地知道应该对二进制文件进行解码。但是只要到string
在二进制上工作
(并使用隐式默认编码),我认为到char
足够显式,应该接受二进制代码>也是(特别是到char
也接受字符串!
)。该死的,我实际上是倒过来的。是Rebol 2不能这么做,不是Rebol 3!但你的解决方案就是我一直在寻找的,因为我想找到一种方法,可以运行在任何一种情况下…等等,你是对的。。。!这是REBOL2,但它不起作用…我的版本错了!(我以后会再次检查,以前没有犯过这个错误。)了解@earl的解决方案也很有用,因为它在Rebol 2和3中都有效(这是我一直在寻找的…)我更新了你的答案,并链接到原始问题,指出困惑的是我,而不是你。:-)另外,如果你不知道,我们这里有一个关于StackOverflow的网站…欢迎加入!