Convert hex string to number [message #44344] |
Fri, 03 June 2005 12:54  |
Michael Wallace
Messages: 409 Registered: December 2003
|
Senior Member |
|
|
Assume you have a hexadecimal number stored as a string. How do you
convert this string to a numeric data type? I can easily convert a
number into a hex string, but how do you go the other way?
-Mike
|
|
|
Re: Convert hex string to number [message #44564 is a reply to message #44344] |
Fri, 24 June 2005 15:29  |
Michael Wallace
Messages: 409 Registered: December 2003
|
Senior Member |
|
|
Karl Schultz wrote:
> On Fri, 24 Jun 2005 17:02:12 -0500, Michael Wallace wrote:
>
>
>>>> Assume you have a hexadecimal number stored as a string. How do you
>>>> convert this string to a numeric data type? I can easily convert a number
>>>> into a hex string, but how do you go the other way?
>>>>
>>>> -Mike
>>>
>>>
>>>
>>> IDL> s = 'f'
>>>
>>> IDL> reads, s,out,format='(z)'
>>>
>>> IDL> help,out
>>>
>>> OUT FLOAT = 15.0000
>>
>>
>> It seems that when the hex numbers get so big, I start losing precision
>> on the conversion. I have tried a number of different ideas with the
>> format codes, but nothing has worked so far. It appears that reads
>> always stores the output value as a float despite how big the input
>> number is. Is there a way to for it to use double or long on the
>> conversion?
>>
>> IDL> reads, '1234abcd', output, format = '(Z)'
>> IDL> print, output, FORMAT = '(I10)'
>> 305441728
>> IDL> reads, '1234abce', output, format = '(Z)'
>> IDL> print, output, FORMAT = '(I10)'
>> 305441728
>> IDL> reads, '1234abcf', output, format = '(Z)'
>> IDL> print, output, FORMAT = '(I10)'
>> 305441728
>>
>> Something is not right with the above picture...
>>
>> -Mike
>
>
> Docs say:
>
> Note
> If the variable specified for the Vari argument has not been previously
> defined, the input data is assumed to be of type float, and the variable
> will be cast as a float.
>
> So,
>
> output = 1d
>
> before you call READS does the trick.
>
> Karl
Wow. And to think I stared at the reads documentation for so long today
and just missed it. Thanks.
-Mike
|
|
|
Re: Convert hex string to number [message #44565 is a reply to message #44344] |
Fri, 24 June 2005 15:23  |
Karl Schultz
Messages: 341 Registered: October 1999
|
Senior Member |
|
|
On Fri, 24 Jun 2005 17:02:12 -0500, Michael Wallace wrote:
>>> Assume you have a hexadecimal number stored as a string. How do you
>>> convert this string to a numeric data type? I can easily convert a number
>>> into a hex string, but how do you go the other way?
>>>
>>> -Mike
>>
>>
>>
>> IDL> s = 'f'
>>
>> IDL> reads, s,out,format='(z)'
>>
>> IDL> help,out
>>
>> OUT FLOAT = 15.0000
>
>
> It seems that when the hex numbers get so big, I start losing precision
> on the conversion. I have tried a number of different ideas with the
> format codes, but nothing has worked so far. It appears that reads
> always stores the output value as a float despite how big the input
> number is. Is there a way to for it to use double or long on the
> conversion?
>
> IDL> reads, '1234abcd', output, format = '(Z)'
> IDL> print, output, FORMAT = '(I10)'
> 305441728
> IDL> reads, '1234abce', output, format = '(Z)'
> IDL> print, output, FORMAT = '(I10)'
> 305441728
> IDL> reads, '1234abcf', output, format = '(Z)'
> IDL> print, output, FORMAT = '(I10)'
> 305441728
>
> Something is not right with the above picture...
>
> -Mike
Docs say:
Note
If the variable specified for the Vari argument has not been previously
defined, the input data is assumed to be of type float, and the variable
will be cast as a float.
So,
output = 1d
before you call READS does the trick.
Karl
|
|
|