vb 编程将十进制数转换成十六进制数

作者&投稿:乔露 (若有异议请与网页底部的电邮联系)
vb编程 将十进制数转换为二进制和十六进制 用do while编程~

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)


肃南裕固族自治县15963736169: 关于vb编程中将十进制转化为十六进制 -
线毅新百: 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

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网