首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

VB中16进制与10进制相互转化解决思路

2012-03-18 
VB中16进制与10进制相互转化[color#0000FF][color#0000FF]’我也知道可以通过tenclng(&H+sixteen)或si

VB中16进制与10进制相互转化
[color=#0000FF][color=#0000FF]’我也知道可以通过ten=clng("&H"+sixteen)或sixteen=hex(ten)来相互转换,但是现在我希望把下面这两个小算法也修改得完全正确。请大虾帮忙!!!谢谢 

'把16进制数转换成10进制数 
Public Function hextodecimal(str2 As String) As Long 
Dim i As Long, a As Variant, k As Long 
k = 0 
For i = Len(str2) - 1 To 0 Step -1 
a = Asc(LCase(Mid(str2, Len(str2) - i, 1))) '统一求得各个字符的小写状态下的字符所对应的ASCII值 
a = IIf(a >= 48 And a <= 57, a - 48, a - 55) 
'0的ASCII码为48,字母a的ASCII码为65,而16进制下的A对应为10进制下的10 
'如果a在16进制下为 0 至 9 的数,则------- 
'如果a在16进制下为 a 至 f 的数,则------- 
k = k + (16 ^ i) * a '累加,就像 12345=1*10^4+2*10^3+3*10^2+4*10^1+5*1^0 
Next 
hextodecimal = k '得到的这个返回值 K 就是转换后的10进制数 
End Function [size=13px]


'10进制转换成16进制数 
Public Function decimaltohex(x As Long) As String 
Dim a As String 
Dim r As String 
Do While x > 0 
r = x Mod 16 
x = x \ 16 
r = IIf(r > 9, Chr(Asc(r) + 7), r) 
a = r + a 
Loop 
decimaltohex = a 
End Function[/color][/color][/size]

[解决办法]
友情up
[解决办法]

[解决办法]
mark

热点排行