[Home] [Groups] - Message: [Prev in Group] [Next in Group]

nu.kanga.list.mud-dev

7169: [MUD-Dev] Re: [CODE QUESTION] How to encode floats into bytes?

[Full Header] [Plain Text]
From: Ben Greear <greear@cyberhighway.net>
Newsgroups: nu.kanga.list.mud-dev
Date: Mon, 7 Sep 1998 10:40:57 -0700 (MST)
References: [1]
Organization: Kanga.Nu
On Mon, 7 Sep 1998, Adam J. Thornton wrote:

> On Mon, Sep 07, 1998 at 07:52:41AM -0600, T. Alexander Popiel wrote:
> > In message:  <Pine.LNX.3.96.980906215952.30075A-100000@shamen.cyberhighway.net>
> > >What is the standard way (if there is one) to encode floating
> > >point numbers (double too I guess) into bytes for transport accross
> > >the network.
> > >It would seem like there would be a method to do this somewhere!
> > Standard is to send raw IEEE format across the wire; just about
> > everyone uses IEEE internally these days, and those who don't
> > know how to convert, so they can talk with those that do.
> 
> You'd clearly use htonl() for ints.  You could use fcvt() or ecvt().  Or
> maybe even sprintf().  All of these are probably a little more portable, but
> much slower, and when you're recovering the number with sscanf() you need
> to worry about precision.

I'm perfectly happy sending bits across in IEEE 754 format.  However,
I don't know how to get the bits.  Can you bit-mask floats?  Basically,
I need a way to grab the mantissa and the exponent as either raw bits
or integers.  Then I can pack it according to the IEEE standard.

Maybe I'm being too complicated. Maybe something like this would encode:

file_descriptor f;  //assume it's connected appropriately.
float f = 42.5;
char* bytes = (char*)(&f);
write(f, bytes, 0, 4);      //think those args are right..

This ignores network order, but I can deal with that.

Ben
> 
> Adam
> -- 
> adam@princeton.edu 
> "There's a border to somewhere waiting, and a tank full of time." - J. Steinman
> 
> -- 
> MUD-Dev: Advancing an unrealised future.
> 


Ben Greear (greear@cyberhighway.net)  http://www.primenet.com/~greear 
Author of ScryMUD:  mud.primenet.com 4444
http://www.primenet.com/~greear/ScryMUD/scry.html