在Haskell中工作時,我正在嘗試將大量布爾值列表寫入二進制文件。使用Haskell將[Bool]寫入二進制文件
我可以將Word8(這是一個8位字)寫入文件,但無法弄清楚如何從八個Bool列表轉換爲Word8。
這是我到目前爲止有:
toByte :: [Bool] -> Word8
toByte list = toByteh list 0 0
toByteh :: [Bool] -> Int -> Word8 -> Word8
toByteh list 8 _ = 0
toByteh list i result
| head list == True = toByteh (tail list) (i + 1) (result .|. (2^i :: Word8))
| otherwise = toByte_h (tail list) (i + 1) result
當我使用這個我只是得到一個0字節。任何人都可以看到這不工作? 還是有更好的方法來做到這一點?
很酷!它有助於以不同的方式看待事物,謝謝! –