gpt4 book ai didi

haskell - 将位转换为 Int8 Haskell

转载 作者:行者123 更新时间:2023-12-02 15:35:17 24 4
gpt4 key购买 nike

尝试将位 (0,1) 列表转换为 Int8 或类似的内容,这样我就不会仅在 1 位上浪费 ByteString 中的字节

例如,我可能有一个像 [0,1,0,0,0,1,1,1,1,0] 这样的列表,它作为 ByteString 将每个列表表示为字节而不是位。

最佳答案

一种解决方案是折叠列表:

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

关于haskell - 将位转换为 Int8 Haskell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34144091/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com