Inverse of IntegerDigits? and "Index" function?
- To: mathgroup at smc.vnet.net
- Subject: [mg3922] Inverse of IntegerDigits? and "Index" function?
- From: pehowland at taz.dra.hmg.gb ()
- Date: Fri, 10 May 1996 03:28:20 -0400
- Organization: LSC2 Division, Defence Research Agency
- Sender: owner-wri-mathgroup at wolfram.com
Excuse me if I'm being particularly inept this morning, but can anyone offer any help on the following problems please? Inverse of IntegerDigits ======================== I'm playing around with some binary numbers, and am using IntegerDigits to convert from a decimal integer to the binary notation. eg. In[1]:= IntegerDigits[10,2] Out[1]= {1,0,1,0} What is the function to convert back? eg. I want to do In[2]:= DigitsToInteger[{1,0,1,0},2] and get Out[2]= 10 I've scoured the manual and can't find the function. This led me to try to write my own function, which identified another problem... "Index" Function ================ Writing a function to convert back is easy in principle, eg. DigitsToInteger[x_,n_] := Apply[Plus[Map[(#*n^(Index[#]-1))&, Reverse[x]]]] would do the trick, but I seem to require a function, that I've called Index[] here, that when Map[]'d across a list returns the position of each element. Thus I want a function that works as follows: In[3]:= Map[Index[#]&, {2,6,3,9,10,2,4}] Out[3]= {1,2,3,4,5,6,7} But I can't seem to find this function either! For the moment I'm using the following more Fortran-like function, which works, but disturbs my sensibilities: DigitsToInteger[x_,n_] := Module[{int=0, l}, l = Reverse[x]; Do [int = int + 2^(i-1)*l[[i]], {i, Length[i]} ]; int ] Any suggestions? Paul E Howland Tel. +44 (0)1684 895767 Long Range Ground Radar Sensors Fax. +44 (0)1684 896315 LSC2 Division Email. PEHOWLAND at DRA.HMG.GB Defence Research Agency St Andrews Road Malvern Worcestershire, WR14 3PS, UK ========================================================================= ==== [MESSAGE SEPARATOR] ====