VB中怎样把二进制转换成十进制?

lll2002 2002-02-08 03:09:20
四个字节按照低位在左的顺序,即little-endian序,
现需要将这四个字节的二进制数变换成一个十进制的数.
请给出代码.
...全文
2690 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
amwlq 2002-02-08
  • 打赏
  • 举报
回复
'我以前的一个程序好的话拿去用'***********************************************************
'以下全部控件都用默认值
'text1~8
'label1~11
'command1~4
'frame1~2
'
'***********************************************************
Private Sub Command1_Click() '十进制转二进制确定按钮
Dim varnum1, varnum2, varnum3, narnum4, nodnum1(7), nodnum2(7), nodnum3(7), nodnum4(7)

varnum1 = Text1.Text '赋值
Do While varnum1 > 0
For i = 0 To 7
nodnum1(i) = varnum1 Mod 2 '取整
varnum1 = varnum1 \ 2 '取余
Next 'strreverse()函数是反向排列字符
Label1.Caption = StrReverse(nodnum1(0) & nodnum1(1) & nodnum1(2) & nodnum1(3) & nodnum1(4) & nodnum1(5) & nodnum1(6) & nodnum1(7)) & "."
Loop
'以下重复三次
varnum3 = Text3.Text
Do While varnum3 > 0
For i = 0 To 7
nodnum3(i) = varnum3 Mod 2
varnum3 = varnum3 \ 2
Next
Label3.Caption = StrReverse(nodnum3(0) & nodnum3(1) & nodnum3(2) & nodnum3(3) & nodnum3(4) & nodnum3(5) & nodnum3(6) & nodnum3(7)) & "."
Loop

varnum2 = Text2.Text
Do While varnum2 > 0
For i = 0 To 7
nodnum2(i) = varnum2 Mod 2
varnum2 = varnum2 \ 2
Next
Label2.Caption = StrReverse(nodnum2(0) & nodnum2(1) & nodnum2(2) & nodnum2(3) & nodnum2(4) & nodnum3(5) & nodnum2(6) & nodnum2(7)) & "."
Loop

varnum4 = Text4.Text
Do While varnum4 > 0
For i = 0 To 7
nodnum4(i) = varnum4 Mod 2
varnum4 = varnum4 \ 2
Next
Label4.Caption = StrReverse(nodnum4(0) & nodnum4(1) & nodnum4(2) & nodnum4(3) & nodnum4(4) & nodnum4(5) & nodnum4(6) & nodnum4(7))
Loop

End Sub

Private Sub Command2_Click() '十进制转二进制清除按钮,清除文本框,标签中的文本
Label1 = ""
Label2 = ""
Label3 = ""
Label4 = ""
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text4.Text = ""
Text1.SetFocus '设定Text1获得焦点
End Sub

Private Sub Command4_Click() '二进制转十进制清除按钮,清除文本框,标签中的文本
Label6 = ""
Label7 = ""
Label8 = ""
Label9 = ""
Text5.Text = ""
Text6.Text = ""
Text7.Text = ""
Text8.Text = ""
Text5.SetFocus
End Sub



Private Sub Text1_Change() '限制只能输入3位
Text1.MaxLength = 3
Text2.MaxLength = 3
Text3.MaxLength = 3
Text4.MaxLength = 3
End Sub

Private Function ConvertBinToDec(strBin As String) As String 'ConvertBinToDec方法是二进制转换成十进制
Dim tmpVal As String, iCount As Long
Dim tmpV As String
For iCount = 1 To Len(strBin) '下面可是重点:实现2^7+2^6+2^5+2^4+2^3+2^1+2^0
tmpVal = Val(tmpVal) + Val(Mid$(strBin, iCount, 1)) * (2 ^ (Len(strBin) - iCount))
Next iCount 'val()返回数值 mid$()从一个字符串中返回指定的字符 icount是设置从第几个字符开始,1是指获取1个字符 
ConvertBinToDec = tmpVal
End Function
Private Sub Command3_Click() '二进制转十进制按钮
Dim a As String, b As String, c As String, d As String
a = Text5.Text
va = ConvertBinToDec(a) '以下连续调用方法四次
Label6.Caption = va

c = Text7.Text
Vc = ConvertBinToDec(c)
Label8.Caption = Vc

d = Text8.Text
Vd = ConvertBinToDec(d)
Label9.Caption = Vd

b = Text6.Text
V1 = ConvertBinToDec(b)
Label7.Caption = V1
End Sub
具体你再修改修改
minglx 2002-02-08
  • 打赏
  • 举报
回复
hex()把一个数转成十六
好像是和计算器的一样,
playyuer 2002-02-08
  • 打赏
  • 举报
回复
Debug.Print &H18

就是 24

不用 Val(),

&H18 + &H18 就是 48
lll2002 2002-02-08
  • 打赏
  • 举报
回复
thank you!
可惜我不放假.
祝你春节吃好玩好!
gongwen 2002-02-08
  • 打赏
  • 举报
回复
同上
dbcontrols 2002-02-08
  • 打赏
  • 举报
回复
你可以通过几个移位和转换函数实现,如Left等,至于怎么实现还是自己动手吧,今天该放假了.自己做学的深.
lll2002 2002-02-08
  • 打赏
  • 举报
回复
泰山过年好!
麻烦替我具体考虑一下好吗?
dbcontrols 2002-02-08
  • 打赏
  • 举报
回复
Val 函数


返回包含于字符串内的数字,字符串中是一个适当类型的数值。

语法

Val(string)

必要的 string 参数可以是任何有效的字符串表达式.

说明

Val 函数,在它不能识别为数字的第一个字符上,停止读入字符串。那些被认为是数值的一部分的符号和字符,例如美圆号与逗号,都不能被识别。但是函数可以识别进位制符号 &O(八进制)和 &H(十六进制)。空白、制表符和换行符都从参数中被去掉。

下面的返回值为 1615198:

Val(" 1615 198th Street N.E.")

在下面的代码中,Val 为所示的十六进制数值返回十进制数值 -1。

Val("&HFFFF")

注意 Val 函数只会将句点(.)当成一个可用的小数点分隔符。当使用不同的小数点分隔符时,如在国际版应用程序中,代之以 CDbl 来把字符串转换为数字。

7,785

社区成员

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

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