[erlang-questions] double to float

Tony Rogvall tony@REDACTED
Thu Oct 18 20:08:48 CEST 2007


Erlang defaults to big endian (historical reasons) numbers that is  
high order bytes first,
for intel like machines they use low order bytes first.

use  X/little-float

/Tony

On 18 okt 2007, at 19.18, Sten Kvamme wrote:

> Vlad pointed in the right direction, so it's working now (thanks
> Vlad!). But it still puzzles me that I have to mirror the 8 bytes to
> have erl accepting them as a float. In C I just do like this:
> fread(Xrealp, sizeof(Xreal), 1, fpdxf);
>
> Here's the erlang code snippet:
>
> ac_double(Thefile) ->
> 	<<X:8/binary, B/binary>> = Thefile,
>     <<X1,X2,X3,X4,X5,X6,X7,X8>> = X,
>     <<Y/float>> = <<X8,X7,X6,X5,X4,X3,X2,X1>>,
> 	{B,Y}.
>
> Here is the whole thing (remember I have just bought the book ;-)
> http://www.kvamme.se/pub/dxf.erl.txt
>
> And here's a small binary dxf file to run on it.
> http://www.kvamme.se/pub/b.dxf
>
> I'm learning fast and it's real fun. I can truly recommend the book.
>
> /Sten Kvamme
>
> On Oct 16, 2007, at 20:43 , Vlad Dumitrescu wrote:
>
>> Hi and welcome,
>>
>> On 10/16/07, Sten Kvamme <sten@REDACTED> wrote:
>>> I'm reading a binary file with lots of double data types. Have
>>> someone already written some code to convert the double 8 bytes,
>>> <<184,162,71,68,75,65,104,64>> to a float?
>>
>> Do you mean
>>    <<X/float>> = <<184,162,71,68,75,65,104,64>>
>> ?
>>
>> regards,
>> Vlad
>
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://www.erlang.org/mailman/listinfo/erlang-questions



More information about the erlang-questions mailing list