Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Binary to Hex Conversion
Message
From
16/06/1997 20:12:39
 
 
To
16/06/1997 19:29:23
General information
Forum:
Visual FoxPro
Category:
Other
Miscellaneous
Thread ID:
00036266
Message ID:
00036593
Views:
43
Well, he must do something ... After all he get paid for that ... :-) > What about negative numbers? :) > > Vlad > > >I just wrote this program. It will covert a number from one base to > another > >whatever the base is. Check it out. You might want to test it, I didn't > >had enough time but it seems to work so far. > > > >If you want to convert a binary number like 10101101 to hex, call > >the function like this : > > > >?Base2Base('10101101',2,16) > > > >For a hex2bin conversion : > > > >?Base2Base('FF',16,2) > > > >For all : If you think this might be usefull for somebody else > >I will upload it on UT. > > > >FUNCTION BASE2BASE > >* Convert integers from one base to another > >* > >* lcNumber - the number to be converted as string > >* lnBaseIn - the base of the number to be converted > >* lnBaseOut - the base of the result > >* > >* return value is string > >* > >* The Letter2Number and Number2Letter functions > >* have to be inserted in the procedure file or ... wherever > >* can be found by the Base2Base > > > >lParameters lcNumber,lnBaseIn,lnBaseOut > > > >LOCAL lnCount, lnDecimal, lnNumberLen, lnRest, lcResult, lnDRes > > > >If Type('lnBaseIn')='L' > > lnBaseIn = 10 > >EndIf > > > >If Type('lnBaseOut')='L' > > lnBaseOut = 10 > >EndIf > > > >if lnBaseIn <> 10 > > lcNumber = Allt(Upper(lcNumber)) > > lnNumberLen = Len(lcNumber) > > > > * conversion 2 decimal > > lnDecimal = 0 > > FOR lnCount = 1 TO lnNumberLen > > lnDecimal = lnDecimal + > >Letter2Number(substr(lcNumber,lnCount,1))*lnBaseIn^(lnNumberLen-lnCount) > > ENDFOR &&* lnCount = 1 TO lnBaseIn > >else > > lnDecimal = val(lcNumber) > >endif > > > >if lnBaseOut <> 10 > > lcResult = '' > > do while .t. > > lnRest = MOD(lnDecimal,lnBaseOut) > > lnDRes = int(lnDecimal/lnBaseOut) > > lcResult = Number2Letter(lnRest) + lcResult > > if lnDRes<>0 > > lnDecimal = lnDRes > > else > > exit > > endif > > enddo > >else > > lcResult = str(lnDecimal) > >endif > > > >Return lcResult > > > >Function Letter2Number > > lParameters lcNumber > > > > do case > > case Between(ASC(lcNumber),48,57) > > lnResult = ASC(lcNumber)-48 > > case Between(ASC(lcNumber),65,90) > > lnResult = ASC(lcNumber)-55 > > otherwise > > lnResult = 0 > > EndCase > > > > Return lnResult > > > >Function Number2Letter > > lParameters lnNumber > > > > do case > > case Between(lnNumber,0,9) > > lcResult = CHR(lnNumber+48) > > case Between(lnNumber,10,45) > > lcResult = CHR(lnNumber+55) > > otherwise > > lcResult = '?' > > EndCase > > > > Return lcResult
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform