首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将字符串转换为每个字节的十六进制列表(Raku)

将字符串转换为每个字节的十六进制列表(Raku)
EN

Stack Overflow用户
提问于 2020-03-26 06:19:09
回答 1查看 110关注 0票数 5

常见问题解答:在Raku中,如何将字符串转换为十六进制的字节列表(即十六进制解码器)

目前,我有:

代码语言:javascript
复制
say "I ❤ ?".encode.list.map(*.base(16));  # (49 20 E2 9D A4 20 F0 9F A6 8B)

这是4次操作

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-26 06:48:12

问题中的方式非常好。但是,由于map无论如何都会强制转换为list,因此可以放弃显式的.list强制,给出:

代码语言:javascript
复制
say "I ❤ ?".encode.map(*.base(16));

由于.base是一个纯操作,因此与>>超运算符一起使用也是安全的,该操作符也将列出:

代码语言:javascript
复制
say "I ❤ ?".encode>>.base(16);

如果我是在吹毛求疵,请注意“将字符串转换为它的字节列表”在没有讨论编码的情况下被低估了。缺省值是UTF-8,因此encode会将字符串转换为UTF-8。在Raku中,内存中字符串的字节级表示不是语言的定义方面,而字符串是一种不透明的数据类型。一个实现可以自由地选择它认为合适的任何底层表示(MoarVM至少有3种方法可以在内部对字符串建模),但是作为语言用户,你永远看不到这一点。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60858213

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档