如何将一个int列表,[Int]
转换为一个Word8列表,[Word8]
。我可以使用let a = 1 :: Word8
转换单个int。如何对整数值列表执行相同的操作?当我尝试的时候,我会发现一个错误。
(另外,我的主要目标是从[Int] -> ByteString
转换,我使用[Word8]
作为中间设备,有更好的方法吗?)
发布于 2015-11-08 17:47:23
试试fromIntegral
吧,这是瑞士军队用来转换整数类型的工具:Data.ByteString.pack (map fromIntegral [97..97 + 25])
应该产生"abcdefghijklmnopqrstuvwxyz" :: Data.ByteString
。
至于这是否是最好的方法的问题:一旦您有了一个Int
的列表,除了支付转换成本之外,没有什么可以做的。Int
s是32位机器整数,为标记保留了三位(我认为),而Word8
是8位机器整数。如果性能是一个问题,也许一开始就只使用Word8
。
发布于 2015-11-08 17:48:19
要在不同的数字类型之间进行转换,请使用fromIntegral
。在您的情况下,您需要map fromIntegral
。请注意,如果无法从程序中推断出fromIntegral
的返回类型,则可能需要指定某些类型。
要生成ByteString
,请尝试:Data.ByteString.pack . map fromIntegral
。
https://stackoverflow.com/questions/33596643
复制相似问题