当前位置:编程学习 > VB >>

VB怎么将字串和二进制码互相转换

怎么做这种东西?

(按Command1后,电脑把Text1.text的字转换到Text2.text) 普通文字换二进制

(按Command2后,电脑把Text2.text的字转换到Text1.text)二进制换普通文字

答案:点击转换为二进制,再次点击转回来,注意只有一个command1和一个text1,你可以自己稍加修改改成你所需要的代码:
分别调用tobit和tostr函数就行,前者转字符串为二进制,后置相反


Dim isstr As Boolean ' 用作标记

Private Sub Command1_Click()
Dim s$
s = Text1.Text
If isstr Then ' isstr=true则表示文本框里为文本
Text1.Text = tobit(s) ' 执行文本->二进制转换
isstr = False
Else ' isstr=false则表示文本框里为二进制
Text1.Text = tostr(s) ' 执行二进制->文本转换
isstr = True
End If
End Sub

Private Sub Form_Load()
isstr = True ' 初始化设定文本框里为文本
End Sub

' 字符串到二进制换转函数,返回转换的二进制字符串表示
Function tobit(str As String) As String
Dim s$
Dim b&
For i = 1 To LenB(str) ' 8位一单元处理每个字节
b = CLng(AscB(MidB(str, i, 1)))
s = s & getbit(b) ' 转转每个字节
Next i
tobit = s
End Function

' 字节到二进制转换,返回转换的二进制字符串表示
Function getbit(num As Long) As String
Dim x&
Dim s$
x = &H80
For i = 1 To 8 ' 循环处理每一个bit
If num And x Then
s = s & 1 ' 此bit为1
Else
s = s & 0 ' 此bit为0
End If
x = x \ 2 ' x右移一位
Next i
getbit = s
End Function

' 还原二进制到字符串,返回原字符串
Function tostr(bitstr As String) As String
Dim e$, str$
Dim a&, b&, c&
While Len(bitstr) ' 一个字符16bit,宽字符
e = Mid(bitstr, 1, 8) ' 低八位
e = Mid(bitstr, 9, 8) + e ' 高八位
bitstr = Mid(bitstr, 17)
c = 1
b = 0
For i = 1 To 16 ' 循环处理每一位,实现转换
a = Asc(Right(e, i)) - 48
b = b + c * a
c = c * 2
Next i
str = str & ChrW(b)
Wend
tostr = str
End Function

Private Sub Command1_Click()
Dim x As Integer
x = Val(Text1.Text)
Text2.Text = ""
Do While x >= 1
y = x Mod 2
x = x \ 2
s = s & Trim$(Str(y))
Loop
For i = Len(s) To 1 Step -1
Text2.Text = Text2.Text & Mid(s, i, 1)
Next i
End Sub

Private Sub Command2_Click()
Dim x As Integer
x = Len(Trim$(Text2.Text))
For i = x To 1 Step -1
y = y + Val(Mid(Text2.Text, i, 1)) * 2 ^ (x - i)
Next i
Text1.Text = y
End Sub

上一个:VB用控件自适应大小函数类型不匹配!!!
下一个:谁能耐给我介绍下` VB`

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,