Haskell 覆盖字中最低有效位
我试图编写一个小工具,通过覆盖输入中每个字节的LSB来隐藏PGM图像文件中的文本。我需要帮助编写一个函数,例如Haskell 覆盖字中最低有效位,haskell,binary,Haskell,Binary,我试图编写一个小工具,通过覆盖输入中每个字节的LSB来隐藏PGM图像文件中的文本。我需要帮助编写一个函数,例如 writeBit :: Bool -> Word8 -> Word8 writeBit b w = ... 其中输出等于w,其LSB设置为b。有人能帮我开始吗 谢谢看一看 除了正确的答案,即您应该使用模块Data.Bits,如果您只想设置/取消设置输入字节的最低有效位,也可以自己编写函数。使用您的函数签名: setLSB :: Bool -> Word8 ->
writeBit :: Bool -> Word8 -> Word8
writeBit b w = ...
其中输出等于w
,其LSB设置为b
。有人能帮我开始吗
谢谢看一看
除了正确的答案,即您应该使用模块
Data.Bits
,如果您只想设置/取消设置输入字节的最低有效位,也可以自己编写函数。使用您的函数签名:
setLSB :: Bool -> Word8 -> Word8
setLSB b w
| b && even w = w + 1
| not b && odd w = w - 1
| otherwise = w
我会附和bmk说Syd Kerckhove的答案是正确的,但有一个很短的选择是正确的
setLSB :: Integral n => Bool -> n -> n
setLSB b w = w - 1 + fromEnum b + fromEnum (even w)
请参阅Data.Bits模块。
setLSB :: Integral n => Bool -> n -> n
setLSB b w = w - 1 + fromEnum b + fromEnum (even w)