MathGroup Archive 2001

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: converting hex strings

  • To: mathgroup at smc.vnet.net
  • Subject: [mg27441] Re: [mg27413] converting hex strings
  • From: BobHanlon at aol.com
  • Date: Sun, 25 Feb 2001 20:55:45 -0500 (EST)
  • Sender: owner-wri-mathgroup at wolfram.com

Here is an approach:

SetAttributes[hexToInteger, Listable];

hexToInteger[hexString_String] := 
  FromDigits[ToExpression[
      Characters[hexString] /. 
        Thread[CharacterRange["a", "f"] -> Range[10, 15] ] ], 16]

hexToInteger[{"01a0", "fffe", "0080"}]

{416, 65534, 128}

I am not familiar with the IEEE floating point standard.


Bob Hanlon

In a message dated 2001/2/25 1:36:31 AM, maarten.vanderburgt at icos.be writes:

>I have a list of hexadecimal strings (read from a hex string text file):
>e.g. {"01a0", "fffe", "0080"} representing integers.
>How can I convert such a list to integers so that I get {416, 4094, 128}?
>I cannot make a function using something like
>
>hextoint = 16^^#&
>
>or
>
>hextoin = 16^^ToExpression[#]&
>
>I get errors like below:
>
>In[44]:= hexstr = "a1b0"
>         t = ToExpression[hexstr];
>         16^^t
>General::"digit": "Digit at position \!\(1\) in \!\(\"t\"\) is too large
>to
>\
>be used in base \!\(16\)."
>
>Where does this error come from?
>
>While this works ok:
>In[43]:= 16^^a1b0
>Out[43]= 41392
>
>The ToExpression[ ] also would give problems: ToExpression["01a0"] returns
>0.
>
>Has anyone done anything along these lines?
>
>How would I have to convert a hex list representing floats (IEEE floating
>point standard)?, e.g. {"42c8000", "3dfcd35b", "bf80000"} which should
>convert to {100.0, 0.12345, -1.0} in a decimal notation.
>


  • Prev by Date: Re: Editing formulas for the web
  • Next by Date: Re: converting hex strings
  • Previous by thread: converting hex strings
  • Next by thread: Re: converting hex strings