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