常见问题解答:在Raku中,如何将字符串转换为十六进制的字节列表(即十六进制解码器)
目前,我有:
say "I ❤ ?".encode.list.map(*.base(16)); # (49 20 E2 9D A4 20 F0 9F A6 8B)这是4次操作
发布于 2020-03-26 06:48:12
问题中的方式非常好。但是,由于map无论如何都会强制转换为list,因此可以放弃显式的.list强制,给出:
say "I ❤ ?".encode.map(*.base(16));由于.base是一个纯操作,因此与>>超运算符一起使用也是安全的,该操作符也将列出:
say "I ❤ ?".encode>>.base(16);如果我是在吹毛求疵,请注意“将字符串转换为它的字节列表”在没有讨论编码的情况下被低估了。缺省值是UTF-8,因此encode会将字符串转换为UTF-8。在Raku中,内存中字符串的字节级表示不是语言的定义方面,而字符串是一种不透明的数据类型。一个实现可以自由地选择它认为合适的任何底层表示(MoarVM至少有3种方法可以在内部对字符串建模),但是作为语言用户,你永远看不到这一点。
https://stackoverflow.com/questions/60858213
复制相似问题