[Haskell-cafe] Data.Binary Endianness

Jules Bean jules at jellybean.co.uk
Mon Sep 10 06:10:58 EDT 2007


Adrian Neumann wrote:
> For example, the internet states, that the magic number, that puts 'BM'
> in the first two bytes of the file is 19778. But when I
> 
>> put (19778::Word16)
> 
> I get 'MB' instead. I read on the german Wikipedia, that bmp uses little
> endian encoding, but Data.Binary uses big endian. Obviously this can't work.
> 

Data.Binary is two different things. This is not as well explained as it 
could be.

It is

(a) a binary read/write layer for haskell types, which uses its own 
formats you have no right to complain about

(b) a simple efficient binary bitstream layer


You don't want to use (a), which takes great care to use compatible 
endianness to make sure its output can be read on other architectures.

(b) however lets you choose your endianness.

http://www.cse.unsw.edu.au/~dons/binary/Data-Binary-Put.html

The docs are not as well interlinked as you might hope.

Jules



More information about the Haskell-Cafe mailing list