十六进制转换成十进制 点击:1356 | 回复:12



YTT2008

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:15帖 | 52回
  • 年度积分:0
  • 历史总积分:108
  • 注册:2007年12月07日
发表于:2008-09-09 09:48:27
楼主

请问各位大侠,VB用什么指令可以把十六进制数转换成十进制?

 

 

 




楼楼

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 539回
  • 年度积分:0
  • 历史总积分:538
  • 注册:2006年7月04日
发表于:2008-09-09 10:26:16
1楼

要自己做程序的.

暮色

  • 精华:0帖
  • 求助:0帖
  • 帖子:10帖 | 199回
  • 年度积分:0
  • 历史总积分:446
  • 注册:2004年12月24日
发表于:2008-09-09 12:40:38
2楼

Function Hex2Dec(InputData As String) As Double
''
''  Converts Hexadecimal to Decimal
''
Dim I As Integer
Dim DecOut As Double
Dim Lenhex As Integer
Dim HexStep As Double


'' Zeroise the output
DecOut = 0

''  The length of the input
''
InputData = UCase(InputData)
Lenhex = Len(InputData)

''
''  Check to make sure its a valid Hex Number
''
For I = 1 To Lenhex

If IsNumeric(Mid(InputData, I, 1)) Then
  ''
  GoTo NumOk
ElseIfmid(InputData, I, 1) = "A" Then
  GoTo NumOk
ElseIfmid(InputData, I, 1) = "B" Then
  GoTo NumOk
ElseIfmid(InputData, I, 1) = "C" Then
  GoTo NumOk
ElseIfmid(InputData, I, 1) = "D" Then
  GoTo NumOk
ElseIfmid(InputData, I, 1) = "E" Then
  GoTo NumOk
ElseIfmid(InputData, I, 1) = "F" Then
  GoTo NumOk
Else
  MsgBox "Number given is not in Hex format", vbCritical
  Exit Function
End If

NumOk:
Next I

HexStep = 0

''
''
''  Convert the Number to Decimal
''
For I = Lenhex To 1 Step -1

HexStep = HexStep * 16
If HexStep = 0 Then
  HexStep = 1
End If

 Ifmid(InputData, I, 1) = "0" Then
   DecOut = DecOut + (0 * HexStep)
 ElseIfmid(InputData, I, 1) = "1" Then
   DecOut = DecOut + (1 * HexStep)
 ElseIfmid(InputData, I, 1) = "2" Then
   DecOut = DecOut + (2 * HexStep)
 ElseIfmid(InputData, I, 1) = "3" Then
   DecOut = DecOut + (3 * HexStep)
 ElseIfmid(InputData, I, 1) = "4" Then
   DecOut = DecOut + (4 * HexStep)
 ElseIfmid(InputData, I, 1) = "5" Then
   DecOut = DecOut + (5 * HexStep)
 ElseIfmid(InputData, I, 1) = "6" Then
   DecOut = DecOut + (6 * HexStep)
 ElseIfmid(InputData, I, 1) = "7" Then
   DecOut = DecOut + (7 * HexStep)
 ElseIfmid(InputData, I, 1) = "8" Then
   DecOut = DecOut + (8 * HexStep)
 ElseIfmid(InputData, I, 1) = "9" Then
   DecOut = DecOut + (9 * HexStep)
 ElseIfmid(InputData, I, 1) = "A" Then
   DecOut = DecOut + (10 * HexStep)
 ElseIfmid(InputData, I, 1) = "B" Then
   DecOut = DecOut + (11 * HexStep)
 ElseIfmid(InputData, I, 1) = "C" Then
   DecOut = DecOut + (12 * HexStep)
 ElseIfmid(InputData, I, 1) = "D" Then
   DecOut = DecOut + (13 * HexStep)
 ElseIfmid(InputData, I, 1) = "E" Then
   DecOut = DecOut + (14 * HexStep)
 ElseIfmid(InputData, I, 1) = "F" Then
   DecOut = DecOut + (15 * HexStep)
 Else
   MsgBox "Something is Screwed up, Wahhhhhhhhhhh", vbCritical
 End If

Next I

 

Hex2Dec = DecOut

eds:
End Function

 

不是我做的,网上的

baobaoyijiaqin

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 30回
  • 年度积分:0
  • 历史总积分:85
  • 注册:2008年9月09日
发表于:2008-09-09 13:13:04
3楼
Vb程序比较容易的,你一定是个新手吧。慢慢学就上手了!但是编程一定要细心。

陈二诚

  • 精华:0帖
  • 求助:0帖
  • 帖子:51帖 | 1758回
  • 年度积分:0
  • 历史总积分:3807
  • 注册:2005年4月11日
发表于:2008-09-09 13:43:48
4楼
程序还很长,很复杂。

YTT2008

  • 精华:0帖
  • 求助:0帖
  • 帖子:15帖 | 52回
  • 年度积分:0
  • 历史总积分:108
  • 注册:2007年12月07日
发表于:2008-09-09 14:17:53
5楼
非常感谢二位楼主,我现在有一个很头疼的问题,我用的是OMRON  C200HX的PLC ,我有开关指令发出到PLC时它会自动有返回数据,我现在不想读它的返回数据。因为有数据返回时,我用MSCOMM1.INPUT指令读到的DM区数据会变化一下。请问我怎样才能不接受它自动返回的数据?

gzgylgl

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 221回
  • 年度积分:0
  • 历史总积分:556
  • 注册:2001年8月30日
发表于:2008-09-12 08:50:21
6楼

你不处理他如何?

piston

  • 精华:0帖
  • 求助:1帖
  • 帖子:23帖 | 13107回
  • 年度积分:18
  • 历史总积分:40065
  • 注册:2009年5月22日
发表于:2008-09-12 09:08:36
7楼
接收但不处理;或者接受后作一个确认,再进行别的数据处理,这更可靠

youhm

  • 精华:0帖
  • 求助:0帖
  • 帖子:8帖 | 709回
  • 年度积分:0
  • 历史总积分:2593
  • 注册:2005年2月16日
发表于:2008-09-12 11:21:32
8楼
HEX("&H" & "十六进制字符")

haipeng

  • 精华:0帖
  • 求助:1帖
  • 帖子:46帖 | 203回
  • 年度积分:0
  • 历史总积分:444
  • 注册:2006年2月12日
发表于:2008-09-19 08:34:57
9楼
CLng("&H"&"十六进制字符")

haipeng

  • 精华:0帖
  • 求助:1帖
  • 帖子:46帖 | 203回
  • 年度积分:0
  • 历史总积分:444
  • 注册:2006年2月12日
发表于:2008-09-19 08:36:12
10楼
CLng("&H"&"十六进制字符")  该函数返回十六进制的十进制数

deng_lp

  • 精华:5帖
  • 求助:0帖
  • 帖子:65帖 | 2669回
  • 年度积分:0
  • 历史总积分:2876
  • 注册:2001年6月19日
发表于:2008-09-20 17:05:26
11楼
引用youhm 的回复内容:HEX("&H" & "十六进制字符")



正解

中原龙

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 831回
  • 年度积分:0
  • 历史总积分:1291
  • 注册:2007年7月09日
发表于:2008-12-25 16:18:01
12楼
引用deng_lp 的回复内容:引用youhm 的回复内容:HEX("&H" & "十六进制字符")



正解




热门招聘
相关主题

官方公众号

智造工程师