
On Tuesday 27 December 2005 02:10, Jeremy Shaw wrote:
they do not care about big endian vs little endian. Does it mean that it just reads the data in whatever endianess the computer is in, right ?
However, while the Binary class in NewBinary may not be appropriate, the uniform interface to binary files/memory could be a good foundation for building hGetWord16le, hGetWord16be, etc.
If you submitted a module that added these functions, I would be glad to update the archive. I've been reading NewBinary's code, it is a bit intimidating for me[1]. It seems easier to define my own binary functions[2]. Could you point me a bit what is the unifor interface so I might give it another chance (to work with NewBinary) ? Thanks. -- Pupeno
(http://pupeno.com)
PS: Is anything wrong with [2] ? [1] I've been with Haskell for a little more than a couple of weeks. [2] Doing some experimentation I wrote: -- | Read a Word8 from a Ptr of any type. ptrToWord8 p = do let np :: Ptr Word8 np = castPtr p r <- (peek np) return r -- | Read a Word16 Big Endian from a Ptr of any type. ptrToWord16BE p = do b1 <- ptrToWord8 p b2 <- ptrToWord8 (plusPtr p 1) let nb1 :: Word16 nb1 = fromIntegral b1 nb2 :: Word16 nb2 = fromIntegral b2 return ((shift nb1 8) .|. nb2) -- | Read a Word16 Little Endian from a Ptr of any type. ptrToWord16LE p = do b1 <- ptrToWord8 p b2 <- ptrToWord8 (plusPtr p 1) let nb1 :: Word16 nb1 = fromIntegral b1 nb2 :: Word16 nb2 = fromIntegral b2 return ((shift nb2 8) .|. nb1) which I used to read Word16s successfully.