DZone Snippets is a public source code repository. Easily build up your personal collection of code snippets, categorize them with tags / keywords, and share them with the world
Haskell Radix Conversion Using ByteStrings
// Another radix conversion, when you need to zippy greatness of Haskell's ByteString
// (Haskell strings are slooooow!)
import qualified Data.ByteString.Lazy.Char8 as BS
convertFromDecimal :: Int -> Int -> BS.ByteString -> BS.ByteString
convertFromDecimal num toBase accum
| toBase < 0 = error "base must be greater than zero"
| toBase > 20 = error "base must be <= 20"
| num < 0 = error "number cannot be negative"
| num <= 0 = accum
| num > 0 =
let chars = "0123456789ABCDEFGHIJ"
over = num `mod` toBase
remain = num `div` toBase
accum' = BS.cons (chars !! over) accum
in
convertFromDecimal remain toBase accum'




