[英]Cast [Int] to [Word8]
如何將一個int列表[Int]
轉換為Word8列表, [Word8]
。 我可以使用let a = 1 :: Word8
單個int。 如何為整數值列表執行相同操作? 當我嘗試時,我得到一個錯誤。
(除此之外,我的主要目標是從[Int] -> ByteString
轉換,我使用[Word8]
作為中間件,有沒有更好的方法來做到這一點?)
試試fromIntegral
,瑞士軍隊在整數類型之間轉換的工具: Data.ByteString.pack (map fromIntegral [97..97 + 25])
應該產生"abcdefghijklmnopqrstuvwxyz" :: Data.ByteString
。
至於這是否是最好的方法的問題:一旦你有一個Int
的列表,除了支付轉換成本之外你沒有什么可做的。 Int
是32位機器整數,其中三位保留用於標記(我認為),而Word8
是8位機器整數。 如果性能是一個問題,也許只是首先使用Word8
。
要在不同的數字類型之間進行轉換,請使用fromIntegral
。 在您的情況下,您需要來自整體的map fromIntegral
。 請注意,如果從程序中無法推斷fromIntegral
返回類型,則可能需要指定某些類型。
要生成ByteString
,請嘗試: Data.ByteString.pack . map fromIntegral
Data.ByteString.pack . map fromIntegral
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.