簡體   English   中英

將位轉換為Int8 Haskell

[英]Convert Bits to Int8 Haskell

試圖將Bits(0,1)的列表轉換為Int8或類似的東西,這樣我就不會浪費ByteString上的一個字節只有1位

例如,我可能有一個像[0,1,0,0,0,1,1,1,1,0]這樣的列表,它作為ByteString表示每個列為Byte而不是Bit。

一種解決方案是折疊列表:

import Data.Bits (Bits, shiftL, (.|.))

pack :: (Num b, Foldable t, Bits b) => t b -> b
pack a = foldl go 0 a
    where go acc i = (acc `shiftL` 1) .|. i

你得到:

\> pack [0,1,0,0,0,1,1,1,1,0]
286

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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