[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: long to float



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                                        [[
[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[