| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 9205 人关注过本帖
标题:[求助]如何用VB实现16转10进制
只看楼主 加入收藏
leolover风
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2006-12-13
收藏
 问题点数:0 回复次数:19 
[求助]如何用VB实现16转10进制
我最近在想 vb 可以实现 10进制转16 进制 , 可不可以 16转10进制.

高手指点一下
搜索更多相关主题的帖子: 进制 指点 
2006-12-13 11:43
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
收藏
得分:0 
自己写算法..

我的msn: myfend@
2006-12-13 13:06
leolover风
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2006-12-13
收藏
得分:0 
我就是因为!不知道算法! 10进制转 16 进制  !  用hex() 函数! 
可是怎么再转过来啊! 

海阔凭鱼跃!天高任鸟飞!
2006-12-13 19:44
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
收藏
得分:0 

Option Explicit

Private Sub Command1_Click()
Dim strData As String
strData = InputBox("请输入16进制数")

Print Hex2Dec(strData)
End Sub

Private Function Hex2Dec(InputData As String) As Double
Dim i As Integer
Dim decOut As Double
Dim LenHex As Integer
Dim HexStep As Double
Dim MidData As String

decOut = 0

InputData = UCase(InputData)
LenHex = Len(InputData)

For i = 1 To LenHex
MidData = Mid(InputData, i, 1)
If Not (IsNumeric(MidData) Or MidData = "A" Or MidData = "B" _
Or MidData = "C" Or MidData = "D" Or MidData = "E" Or MidData = "F") Then
MsgBox "不是合法的十六制进数!请重新输入.", vbExclamation, "数据错误"
Exit Function
End If
Next

HexStep = 0

For i = LenHex To 1 Step -1
HexStep = HexStep * 16
If HexStep = 0 Then HexStep = 1

MidData = Mid(InputData, i, 1)
If MidData = "0" Then
decOut = decOut + (0 * HexStep)
ElseIf MidData = "1" Then
decOut = decOut + (1 * HexStep)
ElseIf MidData = "2" Then
decOut = decOut + (2 * HexStep)
ElseIf MidData = "3" Then
decOut = decOut + (3 * HexStep)
ElseIf MidData = "4" Then
decOut = decOut + (4 * HexStep)
ElseIf MidData = "5" Then
decOut = decOut + (5 * HexStep)
ElseIf MidData = "6" Then
decOut = decOut + (6 * HexStep)
ElseIf MidData = "7" Then
decOut = decOut + (7 * HexStep)
ElseIf MidData = "8" Then
decOut = decOut + (8 * HexStep)
ElseIf MidData = "9" Then
decOut = decOut + (9 * HexStep)
ElseIf MidData = "A" Then
decOut = decOut + (10 * HexStep)
ElseIf MidData = "B" Then
decOut = decOut + (11 * HexStep)
ElseIf MidData = "C" Then
decOut = decOut + (12 * HexStep)
ElseIf MidData = "D" Then
decOut = decOut + (13 * HexStep)
ElseIf MidData = "E" Then
decOut = decOut + (14 * HexStep)
ElseIf MidData = "F" Then
decOut = decOut + (15 * HexStep)
End If
Next

Hex2Dec = decOut
End Function


我的msn: myfend@
2006-12-13 20:11
leolover风
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2006-12-13
收藏
得分:0 

谢谢!


海阔凭鱼跃!天高任鸟飞!
2006-12-14 11:02
slore
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:1108
专家分:0
注 册:2005-7-1
收藏
得分:0 

purana



CLng("&H" & strData)

快上课了……
2006-12-15 13:11
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
收藏
得分:0 
...可以这样的啊?...我不知道哦..

我的msn: myfend@
2006-12-15 13:12
slore
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:1108
专家分:0
注 册:2005-7-1
收藏
得分:0 

Option Explicit

Private Sub Command1_Click()
Dim strData As String
strData = Inputbox("请输入16进制数")

Print Hex2Dec(strData)
End Sub

Private Function Hex2Dec(InputData As String) As Double
Dim i As Integer
Dim decOut As Double
Dim LenHex As Integer
Dim HexStep As Double
Dim MidData As String

decOut = 0

'InputData = UCase(InputData)
LenHex = Len(InputData)

' For i = 1 To LenHex
' MidData = Mid(InputData, i, 1)
' If Not (IsNumeric(MidData) Or MidData = "A" Or MidData = "B" _
' Or MidData = "C" Or MidData = "D" Or MidData = "E" Or MidData = "F") Then
' MsgBox "不是合法的十六制进数!请重新输入.", vbExclamation, "数据错误"
' Exit Function
' End If
' Next

HexStep = 1

For i = LenHex - 1 To 1 Step -1
HexStep = HexStep * 16
'If HexStep = 0 Then HexStep = 1
MidData = Mid(InputData, i, 1)
decOut = decOut + (Val("&H" & MidData) * HexStep)

Next

Hex2Dec = Val("&H" & Right(InputData, 1)) + decOut
End Function

你的貌似不错,我的那个没你的这个转的长~~


快上课了……
2006-12-15 21:17
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
收藏
得分:0 
嗯 ..是不错..

我的msn: myfend@
2006-12-15 21:19
slore
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:1108
专家分:0
注 册:2005-7-1
收藏
得分:0 
你中间的if太累赘了……给你简化了……

你写的时候不累?

快上课了……
2006-12-15 21:20
快速回复:[求助]如何用VB实现16转10进制
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025274 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved