vb 编程将十进制数转换成十六进制数
vb编程,用do-while循环实现十进制转二进制和十六进制:
1、十进制转为二进制:
Sub DecimalToBinary()Dim intNumber As IntegerDim intRemainder As IntegerDim strRemainder As StringDim strBinaryNumber As StringintNumber = CInt(InputBox("Enter number in decimal:", "DECIMAL TO BINARY CONVERSION"))Do While intNumber >= 1 intRemainder = intNumber Mod 2 strRemainder = CStr(intRemainder) intNumber = intNumber \ 2 strBinaryNumber = strRemainder & strBinaryNumberLoopMsgBox "The Number in Binary is : " & strBinaryNumber, , "DECIMAL TO BINARY CONVERSION"End Sub2、十进制转十六进制:
Sub DecimalToHexadecimal() Dim intNumber As Integer Dim intRemainder As Integer Dim strRemainder As String Dim strHexaNumber As String intNumber = CInt(InputBox("Enter number in decimal:", "DECIMAL TO HEXADECIMAL CONVERSION")) Do While intNumber >= 1 intRemainder = intNumber Mod 16 strRemainder = CStr(intRemainder) intNumber = intNumber \ 16 Select Case strRemainder Case "10": strRemainder = "A" Case "11": strRemainder = "B" Case "12": strRemainder = "C" Case "13": strRemainder = "D" Case "14": strRemainder = "E" Case "15": strRemainder = "F" End Select strHexaNumber = strRemainder & strHexaNumber Loop MsgBox "The Number in Hexadecimal is : " & strHexaNumber, , "DECIMAL TO HEXADECIMAL CONVERSION"End Sub
Dim a As String ' 定义变量a为字符串型
DEC_to_HEX = "" ' 变量DEC_to_HEX是存放十进制转化为十六进制是结果,初值为空串 Do While Dec > 0 ' 如果要转化的十进制数Dec大于0,则进入循环
a = CStr(Dec Mod 16) ' 将Dec对16的余数转换成字符型后赋给变量a
Select Case a ' 若a为串10则重新赋值为A;若a为串11则重新赋值为B........若a为串15则重新赋值为F;
Case "10": a = "A"
Case "11": a = "B"
Case "12": a = "C"
Case "13": a = "D"
Case "14": a = "E"
Case "15": a = "F"
End Select
DEC_to_HEX = a & DEC_to_HEX ' 将余数a与DEC_to_HEX连接,a在前的目的是余数倒序的原则Dec = Dec \ 16 ' 将转化的十进制数Dec除16,为下一次求余做准备,若不大于0则循环结束 Loop
1、运行“Microsoft Visual Studio 2010”。
2、”vs“的窗口弹出后,找到菜单栏,鼠标左键单击标题为”文件(f)“的选项。
3、在弹出的列表中鼠标左键单击标题为”新建项目(p)“的项。
4、在弹出的标题为”新建项目“,鼠标左键选择标题为”Visual Basic“项,在选择标题为”WIndows“的项。再在右边的列表中选择标题为”Windows 窗体应用程序“。
5、在一个背景为”白色"的窗口,且标题为“ForM1”的窗口中的空白处鼠标左键双击。
6、在新切换到的“代码编辑页面”。
7、再在 “Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load”下写代码。就可以了。
Private Sub Form_Click()
Dim Dec As Integer,Base As Integer
Dim Decr(30)As Integer
Dim strDecR As String*30
Dim strBase As String*16
Dim b As Integer,n As Integer
strBase="0123456789ABCDE"
Dec=Val(Text1.Text)
Base=Val(Text2.Text)
If Base<2 Or Base>16 Then
res=MsgBox("进制超出范围",vbRetryCancel)
If res=vbRetry Then
Text1.Text=""
Text1.SetFocus
Else
End
End If
End If
n=0
Do While Dec<>0
Decr(n)=Dec Mod Base
Dec=Dec\Base
n=n+1
Loop
strDecR=""
n=n-1
Do While n>=0
b=Decr(n)
strDecR=RTrim(strDecR)+Mid(strBase,b+1,1)
n=n-1
Loop
Label3.Caption=Text1.Text&"转换为"&Text2.Text&"进制后为:"
Text3.Text=strDecR
End Sub
Private Sub Form_Load()
Label1.Caption="十进制数"
Label2.Caption="进制"
Label3.Caption="以下是转换结果:"
Text1.Text=""
Text2.Text=""
Text3.Text=""
End Sub
扩展资料:
while语句若一直满足条件,则会不断的重复下去。但有时,需要停止循环,则可以用下面的三种方式:
一、在while语句中设定条件语句,条件不满足,则循环自动停止。
如:只输出3的倍数的循环;可以设置范围为:0到20。
二、在循环结构中加入流程控制语句,可以使用户退出循环。
1、break流程控制:强制中断该运行区内的语句,跳出该运行区,继续运行区域外的语句。
2、continue流程控制:也是中断循环内的运行操作,并且从头开始运行。
三、利用标识来控制while语句的结束时间。
此题,重点测试的是算法设计,不宜使用VB系统定义的函数Hex()。再说Hex()函数只能将十进制数转化为十六进制整数,而忽略十进制数的小数部分,例如Hex(123.652)=7B。
以下程序解决了Hex()函数不能处理小数部分的问题。但我们知道很多十进制小数不能转化为有限位十六进制小数,此时,本程序保留8位十六进制小数,简单修改本程序,即可改变保留的位数。
以下是程序代码:
Dim Flag As Boolean
Private Sub Command1_Click()
Dim strArray(2) As String, valHexIntegerPart() As Integer, valHexDecimalPart() As Integer
Text2.Text = ""
intarray = Split(Text1.Text, ".")
intIntegerPart = Val(intarray(0))
If UBound(intarray) = 1 Then
intDecimalPart = Val("0." + intarray(1))
Else
intDecimalPart = 0
End If
ReDim valHexIntegerPart(Len(intarray(0))), valHexDecimalPart(8)
Debug.Print intIntegerPart, intDecimalPart
Debug.Print Hex(intIntegerPart)
Do Until intIntegerPart = 0
valHexIntegerPart(k) = intIntegerPart Mod 16
intIntegerPart = intIntegerPart \ 16
k = k + 1
Loop
For i = k - 1 To 0 Step -1
Select Case valHexIntegerPart(i)
Case 0 To 9
Text2.Text = Text2.Text + CStr(valHexIntegerPart(i))
Case 10 To 15
Text2.Text = Text2.Text + Chr(valHexIntegerPart(i) + 55)
End Select
Next i
k = 0
Do Until intDecimalPart = 0
valHexDecimalPart(k) = Int(intDecimalPart * 16)
intDecimalPart = intDecimalPart * 16 - Int(intDecimalPart * 16)
If k >= 8 Then Exit Do
k = k + 1
Loop
Text2.Text = Text2.Text + "."
For i = 0 To k - 1
Select Case valHexDecimalPart(i)
Case 0 To 9
Text2.Text = Text2.Text + CStr(valHexDecimalPart(i))
Case 10 To 15
Text2.Text = Text2.Text + Chr(valHexDecimalPart(i) + 55)
End Select
Next i
End Sub
Private Sub Command2_Click()
Text1.Text = ""
Text2.Text = ""
Text1.SetFocus
Flag = False
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
If Not Flag Then
If Not (KeyAscii >= Asc("0") And KeyAscii <= Asc("9")) And (KeyAscii <> 8) And (KeyAscii <> 46) Then
KeyAscii = 0
Beep
End If
Else
If Not (KeyAscii >= Asc("0") And KeyAscii <= Asc("9")) And KeyAscii <> 8 Then
KeyAscii = 0
Beep
End If
End If
If KeyAscii = 46 Then
Flag = True
End If
End Sub
以下是运行界面:
Private Sub Command1_Click()
n = Val(InputBox("输入要转换的十进制整数:", "十进制转十六进制", "16"))
m = n
x = ""
Do While n >= 16
a = n Mod 16
Select Case a
Case Is < 10
a = a
x = a & x
Case Is = 10
a = "A"
x = a & x
Case Is = 11
a = "B"
x = a & x
Case Is = 12
a = "C"
x = a & x
Case Is = 13
a = "D"
x = a & x
Case Is = 14
a = "E"
x = a & x
Case Is = 15
a = "F"
x = a & x
End Select
n = n \ 16
Loop
Select Case n
Case Is < 10
n = n
Case Is = 10
n = "A"
Case Is = 11
n = "B"
Case Is = 12
n = "C"
Case Is = 13
n = "D"
Case Is = 14
n = "E"
Case Is = 15
n = "F"
End Select
b = x
x = n & x
MsgBox m & "换成十六进制数字是:" & x & " " & Chr(10) & "a为:" & a & " " & Chr(10) & "n为:" & n & " " & Chr(10) & "x为:" & b '输出a,n,b是为了检测方便
End Sub
使用hex()函数即可:
x=hex(100)
线毅新百: Dim a As String ' 定义变量a为字符串型 DEC_to_HEX = "" ' 变量DEC_to_HEX是存放十进制转化为十六进制是结果,初值为空串 Do While Dec > 0 ' 如果要转化的十进制数Dec大于0,则进入循环 a = CStr(Dec Mod 16) ' 将Dec对16的余数转换...
肃南裕固族自治县15963736169: 如何编写将十进制数转换成十六进制的VB程序啊? - ?
线毅新百: Private Sub Form_Load() n = Val(InputBox("请输入要转换的十进制数整数")) m = n x = "" :Y="" Do While n <> 0 a = n Mod 2 n = n \ 2 x = a & x Loop MsgBox m & "换成二进制数是:" & xDo While Len(X) Mod 4 <> 0X = "0" + X Loop...
肃南裕固族自治县15963736169: 用VB编写一个输入十进制转十六进制的程序怎么做? - ?
线毅新百: 用VB编写一个输入十进制整数转十六进制的程序可使用Hex函数完成. 1. Hex 函数,返回代表十六进制数值的 String. 2. Hex 函数示例本示例使用 Hex 函数来得到某数值的 16 进制值. Dim MyHex MyHex = Hex(5) ' 返回 5. MyHex = Hex(10) ' 返回 A. MyHex = Hex(459) ' 返回 1CB. Hex 函数示例本示例使用 Hex 函数来得到某数值的 16 进制值.
肃南裕固族自治县15963736169: VB编程序实现一个十进制数转换成2、8、16进制数. - ?
线毅新百: 十六进制:Hex(number)或使用&H前缀 八进制:Oct(number)或使用&O前缀二、八、十六进制转为十进制: 参数sdate为要进行转换的数,stype为此数的类型. 如要将十六进制的"7b"转为十进制: msgbox OtherToShi("7b",16)Private ...
肃南裕固族自治县15963736169: 如何用VB编程将十进制数字转化成为十六进制数字?? - ?
线毅新百: 十进制和十六进制在使用时没有什么差别,只是打印的时候才有差别,所以你说的这种只是在打印显示的样子, 转换方法是先把十进制显示的转成二进制显示的,再把二进制的转成十六进制的 十进制转二进制(数X) 短除法,X/2,一直到没有余数,然后把所有余数倒着排,如 2|9 1 2|4 0 2|2 0 2|1 1 2|0 (9)10=(01001)2 二进制转十六进制是四位对一位 0000 0 0001 1 0010 2 0011 3 0100 4 0101 5 0110 6 0111 7 1000 8 1001 9 1010 A 1011 B 1100 C 1101 D 1110 E 1111 F 这样你用程序对应的替换下就可以了.
肃南裕固族自治县15963736169: 在VB语言中如何完成从十进制数到十六进制的转换?基本思路是? - ?
线毅新百: 如果是直接转换,就用Hex函数 如a=Print Hex(10) a得到得救是16进制,也就是A 如果要自己做,那就是除16取余,倒取 注意余数10-15要转换成A-F
肃南裕固族自治县15963736169: 用VB编写十进制转换十六进制程序 - ?
线毅新百: 10转 16 i=hex(j) 'j是十进制的书,i 是16进制数16 转10 t=cstr(j) for a = 1 to len(t)i=i+ val(mid(t,i,1))*16^(len(t)-i) next a print i 主干程序部分就是这样,自己再把它加到程序事件里
肃南裕固族自治县15963736169: 用VB,编写程序,实现2,10,16进制的转换,不要太简单的那种 - ?
线毅新百: '直接调用以下函数过程即可'二进制转十进制 Public Function B2D(vBStr As String) As Long Dim vLen As Integer '串长 Dim vDec As Long '结果 Dim vG As Long '权值 Dim vI As Long '位数 Dim vTmp As String '临时串 Dim vN As Long '中间值 ...
肃南裕固族自治县15963736169: 谁有VB十进制转换为十六进制的代码啊? - ?
线毅新百: Private Function HEX_to_DEC(ByVal Hex As String) As Long Dim i As Long Dim B As Long Hex = UCase(Hex) For i = 1 To Len(Hex) Select Case Mid(Hex, Len(Hex) - i + 1, 1) Case "0": B = B + 16 ^ (i - 1) * 0 Case "1": B = B + 16 ^ (i - 1) * 1 ...
肃南裕固族自治县15963736169: 要VB十进制转换成十六进制的完整程序?
线毅新百: Private Sub Command1_Click() MsgBox MyHex(Val(Text1.Text)) End Sub Private Function MyHex(ByVal n As Long) As String Dim h As String Dim i As Integer While n > 0 i = n Mod 16 If i < 10 Then h = i & h Else h = Chr(Asc("A") + i - 10) & h End If n = n \ 16 Wend MyHex = h End Function