Your array contains machine-sized Ints, which in practice are likely
either 32-bit or 64-bit, while a ByteString is the equivalent of an
array or 8-bit values. So you'll need to somehow convert the Ints to
Word8s. Do you know if you need big or little endian?

A basic approach would be:

* Use freeze to convert your IOArray into an IArray
* Use putIArrayOf and put (from cereal) to generate a Putter value
* Use runPut to generate a ByteString from that

Michael

On Tue, Feb 8, 2011 at 10:49 AM, C K Kashyap <[email protected]> wrote:
> Hi,
> I need to convert IOArray to bytestring as shown below -
> import Data.Array.IO
> import Data.Binary.Put
> import qualified Data.ByteString.Lazy as BS
> import Data.Word
> main = do
> arr <- newArray (0,9) 0 :: IO (IOArray Int Int)
> let bs=toByteString arr
> return ()
> How can I implement the 'toByteString' function?
> Regards,
> Kashyap
> _______________________________________________
> Haskell-Cafe mailing list
> [email protected]
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
>

_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to