簡體   English   中英

將[Int]轉換為[Word8]

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM