首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >铸造[国际]到[Word8]

铸造[国际]到[Word8]
EN

Stack Overflow用户
提问于 2015-11-08 17:11:33
回答 2查看 5.4K关注 0票数 8

如何将一个int列表,[Int]转换为一个Word8列表,[Word8]。我可以使用let a = 1 :: Word8转换单个int。如何对整数值列表执行相同的操作?当我尝试的时候,我会发现一个错误。

(另外,我的主要目标是从[Int] -> ByteString转换,我使用[Word8]作为中间设备,有更好的方法吗?)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-08 17:47:23

试试fromIntegral吧,这是瑞士军队用来转换整数类型的工具:Data.ByteString.pack (map fromIntegral [97..97 + 25])应该产生"abcdefghijklmnopqrstuvwxyz" :: Data.ByteString

至于这是否是最好的方法的问题:一旦您有了一个Int的列表,除了支付转换成本之外,没有什么可以做的。Ints是32位机器整数,为标记保留了三位(我认为),而Word8是8位机器整数。如果性能是一个问题,也许一开始就只使用Word8

票数 13
EN

Stack Overflow用户

发布于 2015-11-08 17:48:19

要在不同的数字类型之间进行转换,请使用fromIntegral。在您的情况下,您需要map fromIntegral。请注意,如果无法从程序中推断出fromIntegral的返回类型,则可能需要指定某些类型。

要生成ByteString,请尝试:Data.ByteString.pack . map fromIntegral

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

https://stackoverflow.com/questions/33596643

复制
相关文章

相似问题

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