[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: long to float
- Subject: Re: long to float
- From: Martin Schultz <martin.schultz(at)dkrz.de>
- Date: Thu, 05 Apr 2001 19:49:49 +0200
- Newsgroups: comp.lang.idl-pvwave
- Organization: Max-Planck-Institut fuer Meteorologie, Hamburg
- References: <9ai0tp$9fs$1@n.ruf.uni-freiburg.de>
- Xref: news.doit.wisc.edu comp.lang.idl-pvwave:24402
Dominik wrote:
>
> Hello,
>
> I have a small problem (i hope)
>
> I read a number (is = -536852787) out of a file. But this number is not a
> long, it shoul be a float. It should be sb =6588.00. I am not sure if the
> first Number is a big endian, but the second is in little endian.
> so, after I multiply the start number with -1 and make byteorder, the same
> hexadecimal number is in the memory. It is FF1F33B9, but he shows
> e -14732359
> Is there a good way to see the stuff in memory as a float and not as a
> long??
>
> thanks for helping
> Dominik
>
> Example code
> pro test
>
> f = -536852787
> help, f
> print, Format='(Z)', f
> f = -1 * f
> help, f
> print, Format='(Z)', f
> byteorder, f
> help, f
> print, Format='(Z)', f
> end
I would tackle the problem on the step before: you mention you read
the number from a file. So (if it is a binary file) you should make
use of the swap_endian keyword if you read files produced on other
platforms. Then you can directly read in your float numbers with no
need of conversion.
BTW: You should always "declare" the variable type when you read stuff
from file, e.g.
time=0.D
value=0.
index=0L
readu,lun,time,value,index
Martin
--
[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[
[[ Dr. Martin Schultz Max-Planck-Institut fuer Meteorologie [[
[[ Bundesstr. 55, 20146 Hamburg [[
[[ phone: +49 40 41173-308 [[
[[ fax: +49 40 41173-298 [[
[[ martin.schultz@dkrz.de [[
[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[