X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=src%2FOctet.hs;h=f8af4df8c90ec51f6db9bac93e92a1d1abc7c79f;hb=6c076a2622dd9a6bfc96ed05f8478b5150db176a;hp=28d3d7d5feb3b8e4165122ea2e689c5b1bf6e1e5;hpb=706e492881f05238ace00fefc6ec9cb0000ea2e9;p=hath.git diff --git a/src/Octet.hs b/src/Octet.hs index 28d3d7d..f8af4df 100644 --- a/src/Octet.hs +++ b/src/Octet.hs @@ -30,6 +30,22 @@ octet_to_int x = 0 * (bit_to_int (b8 x)) +-- Supply an integer greater than 255 at your own risk. +octet_from_int :: Int -> Octet +octet_from_int x + | (x < 0) = min_octet + | otherwise = (Octet a1 a2 a3 a4 a5 a6 a7 a8) + where + a1 = if (x `mod` 128) > 0 then One else Zero + a2 = if (x `mod` 64) > 0 then One else Zero + a3 = if (x `mod` 32) > 0 then One else Zero + a4 = if (x `mod` 16) > 0 then One else Zero + a5 = if (x `mod` 8) > 0 then One else Zero + a6 = if (x `mod` 4) > 0 then One else Zero + a7 = if (x `mod` 2) > 0 then One else Zero + a8 = if (x `mod` 1) > 0 then One else Zero + + -- The octet with the least possible value. min_octet :: Octet min_octet = Octet Zero Zero Zero Zero Zero Zero Zero Zero