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

wangxue_1629 2005-11-25 09:21:17
Visual Basic有没有将16进制数转换为二进制数的函数?
...全文
369 9 打赏 收藏 转发到动态 举报
写回复
用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
VB程序设计综合复习题 1、叙述Visual Basic的特点。 2、当窗体上有三个文本框和一个命令按钮,若程序运行时,焦点定位在第三个文本框(Text3)处,应对何控件的什么属性进行何种设置? 3、若要对窗体上的三个文本框输入据,个控件焦点的移动可通过Tab键(系统本身具有的),也可通过回车键,则要对文本框的什么事件编程? 4、当某文本框输入据后(按了回车键),进行判断认为据输入错,怎样删除原来据?怎样使焦点回到文本框重新输入? 5、怎样把关于Command命令按钮的Enabled属性的帮助示例代码复制到你的代码窗口?已知帮助中的代码如下: Private Sub Form_Load() Text1.Text = ”” ‘消除文本框的内容 Command1.Caption = “Save” ‘在按钮上放置标题 End Sub Private Sub Text1_Change() If Text1.Text = “” Then ‘查看文本框是否为空 Command1.Enabled = False ‘使按钮无效 Else Command1.Enabled = True ‘使按钮有效 End If End Sub 6、当运行程序前,对某些控件设置属性值,除了在窗体中直接设置外,还可以通过代码设置,这些代码一般放在什么事件中?例如,程序要将命令按钮定位在窗体的中央,请写出事件过程。 7、在KeyPress事件中,如何取消用户刚键入的字符? 8、静态组与动态组的区别是什么?在声明静态组、重定义动态组时的下标都可以用变量来表示吗? 9、过程和子过程的区别是什么? 10、子过程调用有哪两种形式? 11、什么是形参?什么是实参?什么是值引用?什么地址引用?地址引用时,对应的实参有没有限制? 12、如果要时钟控件每半分钟发生一个Timer事件,则Interval属性应设置为多少? 13、如果在KeyDown事件过程中将KeyCode设置为0,KeyPress的KeyAscii参会不会受影响?如果输入的对象是文本框,那文本框的内容是否有影响? 14、构造满足下列条件的Open语句。 (1)建立一个新的顺序文件SEQNEW.DAT,供用户写入据,指定文件号为1。 (2)打开一个老的顺序文件SEQOLD.DAT,用户将从该文件读出据,指定文件号为2。 (3)打开一个老的顺序文件SEQAPPEND.DAT,用户将在该文件后面添加据,文件号通过调用FreeFile获得。 15、请写出程序代码片段,将磁盘上的两个文件合并。(提示:把它们作为二进制文件打开) 16、PictureBox控件和Image控件有什么区别? 17、Visual Basic可处理哪些格式的图形文件? 18、在程序运行时怎样在图形(像)框中装入或删除图形? 19、简述Printer对象与Printers集合对象的区别。 20、当要在ToolBar控件中添加一个按钮,如何实现? 21、当要修改ToolBar控件某按钮的图像,如何实现? 22、Visual Basic中记录集有几种类型?有

7,763

社区成员

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

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