Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 覆盖字中最低有效位_Haskell_Binary - Fatal编程技术网

Haskell 覆盖字中最低有效位

Haskell 覆盖字中最低有效位,haskell,binary,Haskell,Binary,我试图编写一个小工具,通过覆盖输入中每个字节的LSB来隐藏PGM图像文件中的文本。我需要帮助编写一个函数,例如 writeBit :: Bool -> Word8 -> Word8 writeBit b w = ... 其中输出等于w,其LSB设置为b。有人能帮我开始吗 谢谢看一看 除了正确的答案,即您应该使用模块Data.Bits,如果您只想设置/取消设置输入字节的最低有效位,也可以自己编写函数。使用您的函数签名: setLSB :: Bool -> Word8 ->

我试图编写一个小工具,通过覆盖输入中每个字节的LSB来隐藏PGM图像文件中的文本。我需要帮助编写一个函数,例如

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)