FAQ:在 Raku 中,如何将字符串转换为其十六进制的字节列表(即十六进制解码器)
目前,我有:
say "I ? ".encode.list.map(*.base(16)); # (49 20 E2 9D A4 20 F0 9F A6 8B)
Run Code Online (Sandbox Code Playgroud)
这是4个操作
问题中的方式非常好。由于无论如何map都会强制转换为 a list,因此可以删除显式.list强制,给出:
say "I ? ".encode.map(*.base(16));
Run Code Online (Sandbox Code Playgroud)
由于.base是纯操作,因此与>>超级操作符一起使用也是安全的,它也将列出:
say "I ? ".encode>>.base(16);
Run Code Online (Sandbox Code Playgroud)
如果我有点吹毛求疵,请注意“将字符串转换为其字节列表”是未指定的,而不涉及编码。默认值为 UTF-8,因此encode会将字符串转换为该字符串。在 Raku 中,内存中字符串的字节级表示不是语言的定义方面,并且字符串是一种不透明的数据类型。实现可以自由选择它认为合适的任何底层表示(MoarVM 至少有 3 种方法可以在内部对字符串进行建模),但是作为语言用户,您永远不会看到这一点。
| 归档时间: |
|
| 查看次数: |
94 次 |
| 最近记录: |