HexToInt?

BlitzMax Forums/BlitzMax Programming/HexToInt?

The forum is locked. These are the original blitzbasic.com forums, kept so they can still be read. No new topics, replies or edits can be made here. To join in, head over to the Blitz3D+ forums.

Some related routines... I coded them for my interpreter:
Function NumberToLong:Long( Text:String )
	Text = Text.Trim()
	Local n:Long, sign
	If Text[0]=45 Then sign=-1;Text=Text[1..] Else sign=1

	For Local i = 0 Until Text.length
		If Text[i]>47 And Text[i]<58 Then n= (n * 10) + Text[i]-48 Else Return n*sign
	Next
	Return n*sign
End Function

Function HexToLong:Long( HexStr:String )
	Local n:Long
	HexStr = HexStr.Trim().Toupper()
	If HexStr[0]=36 Then HexStr=HexStr[1..] '$
	For Local i = 0 Until HexStr.length
		If HexStr[i]>64 And HexStr[i]<77 Then n = (n Shl 4) + HexStr[i]-55 ElseIf HexStr[i]>47 And HexStr[i]<58 Then n = (n Shl 4) + HexStr[i]-48 Else Return n
	Next
	Return n 
End Function

Function BinToLong:Long( BinStr:String )
	Local n:Long
	BinStr = BinStr.Trim()
	If BinStr[0]=37 Then BinStr=BinStr[1..]	'%
	For Local i = 0 Until BinStr.length
		If BinStr[i]>47 And BinStr[i]<50 Then n = (n Shl 1) + BinStr[i]-48 Else Return n
	Next
	Return n
End Function


Function DecimalToDouble:Double(Text$)
	Local n:Double,Dec,Sign
	Text = Text.Trim()
	If Text[0]=45 Then sign=-1;Text=Text[1..] Else sign=1
	For Local i = 0 Until Text.Length
		If Dec<0 Then
			If Text[i]>47 And Text[i]<58 Then n:+(Text[i]-48)*(10.0^Dec) Else Return n*Sign
			Dec:-1
		Else
			If Text[i]>47 And Text[i]<58 Then n=(n*10)+Text[i]-48 ElseIf Text[i]=46 Then Dec=-1 Else Return n*Sign
		EndIf
	Next
	Return n*Sign
End Function

Function ScientificToDouble:Double(Text$)
	Text = Text.Trim()
	Return DecimalToDouble(Text[0..Text.Find("e")])*(10^Int(NumberToLong(Text[Text.Find("e")+1..])))
End Function

Print 5.2e4
Print ScientificToDouble("5.2e4")
Print 2.3456						':O
Print 1+DecimalToDouble("1.3456")
Print %10101011
Print BinToLong("%10101011")
Print $FFA9
Print HexToLong("$FFA9")
Print 534
Print 100+NumberToLong("434")
Hex only checks for $ since this is designed for bmax compatability.