有没有一种有效的方法将Int(并且最好Integer)转换为列表Word8或甚至列表?{G,H} oogling for Int -> [Word8]没有产生任何有希望的结果......
这两个Int和Integer是的实例Bits类型类,这样你就可以提取使用这个类的功能,随意的单位.
既然Int也是一个实例Storable,你可以使用它的大小sizeOf.安(低效)实现你想要什么Int,以及其他类型都是实例Bits和Storable,是这样的:
import Foreign.Storable
import Data.Bits
bitList :: (Storable a, Bits a) => a -> [Bool]
bitList x = map (testBit x) [0..8*(sizeOf x)-1]
Run Code Online (Sandbox Code Playgroud)
这给出了例如
bitList (0 :: Int) == [False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False]
bitList (-1 :: Int) == [True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True]
bitList (16 :: Word8) == [False,False,False,False,True,False,False,False]
bitList (maxBound ::Word32) == [True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True,True]
Run Code Online (Sandbox Code Playgroud)