VB中16进制与10进制相互转化

ijwsoft 2008-12-06 07:25:29
[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][/size]
...全文
344 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
android2008 2008-12-08
  • 打赏
  • 举报
回复
mark
ijwsoft 2008-12-08
  • 打赏
  • 举报
回复
我的问题解决了
----------------------------------------------------------
'把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 - 87)
'0的ASCII码为48,字母a的ASCII码为97,而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


'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 - 9) + 16), r)
'如果这里不减9,一旦r为11,12,13,14,15时,就只得到 1 的ASCII码值,得到了一个错误的结果。
a = r + a
Loop
decimaltohex = a
End Function
----------------------------------------------------------
qap22 2008-12-08
  • 打赏
  • 举报
回复
mark
qap22 2008-12-06
  • 打赏
  • 举报
回复
友情up

1,065

社区成员

发帖
与我相关
我的任务
社区描述
VB 资源
社区管理员
  • 资源
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧