Visual Basic有没有将16进制数转换为二进制数的函数

wangxue_1629 2005-11-25 09:21:17
Visual Basic有没有将16进制数转换为二进制数的函数?
...全文
408 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Winters_lee 2005-11-25
  • 打赏
  • 举报
回复
Msgbox HexChange(FD8A)

1111110110001010

Winters_lee 2005-11-25
  • 打赏
  • 举报
回复
Private Function HexChange(ByVal vHexCode As String) As String

On Error GoTo ErrOPR
vHexCode = UCase(vHexCode)
If Not IsNumeric("&H" & vHexCode) Then Exit Function
Dim i%
For i = 1 To Len(vHexCode)
HexChange = HexChange & DoHex(Mid(vHexCode, i, 1))
Next
Exit Function
ErrOPR:
HexChange = ""
End Function

Private Function DoHex(ByVal vHexCode As String) As String
Dim tA%, tB$, n%
tA = CInt("&H" & vHexCode)
Do Until tA = 0
n = tA Mod 2
tB = n & tB
tA = tA \ 2
Loop
DoHex = Format(tB, "0000")
End Function
zou19820704 2005-11-25
  • 打赏
  • 举报
回复
上面是最基本的,学好了以后方便手动操作哦!
zou19820704 2005-11-25
  • 打赏
  • 举报
回复
Option Explicit
Public Function num2() As Double
Dim i As Integer
Dim x As String
Dim str As Double
Dim sum As Double
Dim m As Integer
For i = Len(Form1.Text1.Text) To 1 Step -1
x = Mid(Form1.Text1.Text, i, 1)
If Asc(x) > 47 And Asc(x) < 50 Then
str = Val(x) * 2 ^ m
Else
MsgBox ("输入不合法")
Form1.Text1.SetFocus
Form1.Text1.SelStart = i - 1
Form1.Text1.SelLength = 1
Exit Function
End If
sum = sum + str
m = m + 1
Next i
num2 = sum
End Function

Public Function huan8(ten As Double) As String
Dim eight As String
Dim n As Integer
Do Until ten = 0
n = ten Mod 8
eight = n & eight
ten = ten \ 8
Loop
huan8 = eight
End Function

Public Function huan16(ten As Double) As String
Dim sixteen As String
Dim n As Integer
Dim x As String
Do Until ten = 0
n = ten Mod 16
Select Case n
Case 10
x = "A"
Case 11
x = "B"
Case 12
x = "C"
Case 13
x = "D"
Case 14
x = "E"
Case 15
x = "F"
Case Else
x = n
End Select
sixteen = x & sixteen
ten = ten \ 16
Loop
huan16 = sixteen
End Function

Public Function num8() As Double
Dim i As Integer
Dim x As String
Dim str As Long
Dim sum As Long
Dim m As Integer
For i = Len(Form1.Text2.Text) To 1 Step -1
x = Mid(Form1.Text2.Text, i, 1)
If Asc(x) > 47 And Asc(x) < 56 Then
str = Val(x) * 8 ^ m
Else
MsgBox ("输入不合法")
Form1.Text2.SetFocus
Form1.Text2.SelStart = i - 1
Form1.Text2.SelLength = 1
Exit Function
End If
sum = sum + str
m = m + 1
Next i
num8 = sum
End Function

Public Function num16() As Double
Dim i As Integer
Dim x As String
Dim str As Double
Dim sum As Double
Dim m As Integer

For i = Len(Form1.Text3.Text) To 1 Step -1
x = Mid(Form1.Text3.Text, i, 1)
If (Asc(x) > 47 And Asc(x) < 58) Or (Asc(x) > 64 And Asc(x) < 91) Then
Select Case x
Case "A"
x = 10
Case "B"
x = 11
Case "C"
x = 12
Case "D"
x = 13
Case "E"
x = 14
Case "F"
x = 15
Case Else
x = x
End Select
str = Val(x) * 16 ^ m
Else
MsgBox ("输入不合法")
Form1.Text3.SetFocus
Form1.Text3.SelStart = i - 1
Form1.Text3.SelLength = 1
Exit Function
End If
sum = sum + str
m = m + 1
Next i
num16 = sum
End Function

Public Function huan2(ten As Double) As String
Dim two As String
Dim n As Double
Do Until ten = 0
n = ten Mod 2
two = n & two
ten = ten \ 2
Loop
huan2 = two
End Function


viena 2005-11-25
  • 打赏
  • 举报
回复
sorry,有点考虑不周,还是用一个数组比较方便,里面有空元素无所谓的
viena 2005-11-25
  • 打赏
  • 举报
回复
还是说详细点吧,
初始化两个数组,下标分别从0的ascii到9的ascii、A的ascii到F的ascii,数组里存放相应的二进制字符串,"0000"到"1001","1010"到"1111",

16进制字符串用Strconv转为Byte数组,遍历Byte数组,查表得到对应的二进制,放到一个字符串数组,最后用join连接为二进制字符串
viena 2005-11-25
  • 打赏
  • 举报
回复
一一对应而已,一位对应4位
winehero 2005-11-25
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/topic/4402/4402437.xml?temp=.6504785
northwolves 2005-11-25
  • 打赏
  • 举报
回复
Function HextoBin(ByVal x As String) As String
Const Bins = "0000000100100011010001010110011110001001101010111100110111101111"
If IsNumeric("&h" & x) Then
Dim i As Integer
For i = 1 To Len(x)
HextoBin = HextoBin + Mid(Bins, (Val("&h" + Mid(x, i, 1)) * 4 + 1), 4)
Next
HextoBin = Format(HextoBin, "0")
End If
End Function

7,785

社区成员

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

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