[Haskell-cafe] bytea decoding
Adam Langley
agl at imperialviolet.org
Sun Jan 20 12:37:59 EST 2008
2008/1/20 Bryan Green <dbryan.green at gmail.com>:
> Does anyone know of a library that will handle bytea encodings from
> postgres? The bytea field that I need to access contains a jpg file. I
> want to retrieve it from the database and write it out for an image display
> program.
I'd love to see Don give the correct ByteString solution, but here's a
slow version I knocked up (probably buggy):
import qualified Data.ByteString as B
import Data.ByteString.Internal (c2w)
import Data.Maybe (catMaybes)
import Data.List (mapAccumL)
byteaDecode :: B.ByteString -> B.ByteString
byteaDecode = B.pack . catMaybes . snd . mapAccumL f initState . B.unpack where
initState = (0, 0)
f (0, _) 92 = ((1, 0), Nothing)
f (0, _) x = ((0, 0), Just x)
f (1, _) 92 = ((0, 0), Just 92)
f (3, n) x = ((0, 0), Just (n * 8 + (x - 48)))
f (c, n) x = ((c + 1, n * 8 + (x - 48)), Nothing)
AGL
--
Adam Langley agl at imperialviolet.org
http://www.imperialviolet.org 650-283-9641
More information about the Haskell-Cafe
mailing list