将[Int]转换为[Word8]

use*_*074 6 haskell casting

如何将int列表[Int]转换为Word8列表[Word8].我可以使用一个int let a = 1 :: Word8.如何为整数值列表执行相同操作?当我尝试时,我得到一个错误.

(除此之外,我的主要目标是转换[Int] -> ByteString,我[Word8]用作中间件,有没有更好的方法来做到这一点?)

hao*_*hao 9

尝试fromIntegral,瑞士军队在整数类型之间转换的工具:Data.ByteString.pack (map fromIntegral [97..97 + 25])应该屈服"abcdefghijklmnopqrstuvwxyz" :: Data.ByteString.

至于这是否是最好的方法的问题:一旦你有一个Ints 列表,除了支付转换成本之外你没有什么可做的.Ints是32位机器整数,其中三位保留用于标记(我认为),而是Word88位机器整数.如果性能是一个问题,也许只是首先使用Word8s.


sin*_*nan 7

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

为了生成ByteString,尝试:Data.ByteString.pack . map fromIntegral.