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的网站…欢迎加入!