字符串与二进制互相转化(不包含汉字)
2008-05-01 05:46
211 查看
对于二进制与字符的互换,是由于我要做DES加密程序的需要才设计的
现在把我的源程序发布:
先建立一个工程
在框架上画
两个textbox,命名为text1,text2
两个commandbutton, 命名为command1,command1
其他定义自己去该吧!
rem 此程序由Qthinker制作,免费发布,可以修改,请保留此信息
Option Base 1
Private Function byte2bit(s As String) As String
Dim i As Integer, j As Integer, k As Integer, ilen As Integer
Dim by() As String
Dim b() As Integer
ilen = Len(s)
ReDim by(ilen)
ReDim b(ilen / 8)
For k = 1 To ilen
by(k) = Mid$(s, k, 1)
Next k
For i = 1 To (ilen / 8)
If by(1 + 8 * (i - 1)) = "1" Then
b(i) = b(i) Or &H80
Else
b(i) = b(i) And &H7F
End If
If by(2 + 8 * (i - 1)) = "1" Then
b(i) = b(i) Or &H40
Else
b(i) = b(i) And &HBF
End If
If by(3 + 8 * (i - 1)) = "1" Then
b(i) = b(i) Or &H20
Else
b(i) = b(i) And &HDF
End If
If by(4 + 8 * (i - 1)) = "1" Then
b(i) = b(i) Or &H10
Else
b(i) = b(i) And &HEF
End If
If by(5 + 8 * (i - 1)) = "1" Then
b(i) = b(i) Or &H8
Else
b(i) = b(i) And &HF7
End If
If by(6 + 8 * (i - 1)) = "1" Then
b(i) = b(i) Or &H4
Else
b(i) = b(i) And &HFB
End If
If by(7 + 8 * (i - 1)) = "1" Then
b(i) = b(i) Or &H2
Else
b(i) = b(i) And &HFD
End If
If by(8 + 8 * (i - 1)) = "1" Then
b(i) = b(i) Or "1"
Else
b(i) = b(i) And &HFE
End If
byte2bit = byte2bit & Chr$(b(i))
Next i
End Function
Private Function bit2byte(s As String) As String
Dim s2 As String
Dim x As String
Dim i As Integer, k As Integer
Dim ilen As Integer
ilen = Len(s)
Dim b()
Dim s1()
ReDim s1(ilen)
ReDim b(ilen * 8)
s2 = ""
For i = 1 To ilen
x = Mid$(s, i, 1)
s1(i) = Asc(x)
If s1(i) And &H80 Then
b(1 + 8 * (i - 1)) = 1
Else
b(1 + 8 * (i - 1)) = 0
End If
If s1(i) And &H40 Then
b(2 + 8 * (i - 1)) = 1
Else
b(2 + 8 * (i - 1)) = 0
End If
If s1(i) And &H20 Then
b(3 + 8 * (i - 1)) = 1
Else
b(3 + 8 * (i - 1)) = 0
End If
If s1(i) And &H10 Then
b(4 + 8 * (i - 1)) = 1
Else
b(4 + 8 * (i - 1)) = 0
End If
If s1(i) And &H8 Then
b(5 + 8 * (i - 1)) = 1
Else
b(5 + 8 * (i - 1)) = 0
End If
If s1(i) And &H4 Then
b(6 + 8 * (i - 1)) = 1
Else
b(6 + 8 * (i - 1)) = 0
End If
If s1(i) And &H2 Then
b(7 + 8 * (i - 1)) = 1
Else
b(7 + 8 * (i - 1)) = 0
End If
If s1(i) And "1" Then
b(8 + 8 * (i - 1)) = 1
Else
b(8 + 8 * (i - 1)) = 0
End If
Next i
For k = 1 To ilen * 8
s2 = s2 & b(k)
If k Mod 8 = 0 Then
s2 = s2
End If
Next k
bit2byte = s2
End Function
Private Sub Command1_Click()
Dim s As String
Dim s2 As String
s = Text1.Text
s2 = bit2byte(s)
Text2.Text = s2
End Sub
Private Sub Command2_Click()
Dim s As String
Dim s1 As String
s = Text2.Text
s1 = byte2bit(s)
Text2.Text = s1
End Sub
现在把我的源程序发布:
先建立一个工程
在框架上画
两个textbox,命名为text1,text2
两个commandbutton, 命名为command1,command1
其他定义自己去该吧!
rem 此程序由Qthinker制作,免费发布,可以修改,请保留此信息
Option Base 1
Private Function byte2bit(s As String) As String
Dim i As Integer, j As Integer, k As Integer, ilen As Integer
Dim by() As String
Dim b() As Integer
ilen = Len(s)
ReDim by(ilen)
ReDim b(ilen / 8)
For k = 1 To ilen
by(k) = Mid$(s, k, 1)
Next k
For i = 1 To (ilen / 8)
If by(1 + 8 * (i - 1)) = "1" Then
b(i) = b(i) Or &H80
Else
b(i) = b(i) And &H7F
End If
If by(2 + 8 * (i - 1)) = "1" Then
b(i) = b(i) Or &H40
Else
b(i) = b(i) And &HBF
End If
If by(3 + 8 * (i - 1)) = "1" Then
b(i) = b(i) Or &H20
Else
b(i) = b(i) And &HDF
End If
If by(4 + 8 * (i - 1)) = "1" Then
b(i) = b(i) Or &H10
Else
b(i) = b(i) And &HEF
End If
If by(5 + 8 * (i - 1)) = "1" Then
b(i) = b(i) Or &H8
Else
b(i) = b(i) And &HF7
End If
If by(6 + 8 * (i - 1)) = "1" Then
b(i) = b(i) Or &H4
Else
b(i) = b(i) And &HFB
End If
If by(7 + 8 * (i - 1)) = "1" Then
b(i) = b(i) Or &H2
Else
b(i) = b(i) And &HFD
End If
If by(8 + 8 * (i - 1)) = "1" Then
b(i) = b(i) Or "1"
Else
b(i) = b(i) And &HFE
End If
byte2bit = byte2bit & Chr$(b(i))
Next i
End Function
Private Function bit2byte(s As String) As String
Dim s2 As String
Dim x As String
Dim i As Integer, k As Integer
Dim ilen As Integer
ilen = Len(s)
Dim b()
Dim s1()
ReDim s1(ilen)
ReDim b(ilen * 8)
s2 = ""
For i = 1 To ilen
x = Mid$(s, i, 1)
s1(i) = Asc(x)
If s1(i) And &H80 Then
b(1 + 8 * (i - 1)) = 1
Else
b(1 + 8 * (i - 1)) = 0
End If
If s1(i) And &H40 Then
b(2 + 8 * (i - 1)) = 1
Else
b(2 + 8 * (i - 1)) = 0
End If
If s1(i) And &H20 Then
b(3 + 8 * (i - 1)) = 1
Else
b(3 + 8 * (i - 1)) = 0
End If
If s1(i) And &H10 Then
b(4 + 8 * (i - 1)) = 1
Else
b(4 + 8 * (i - 1)) = 0
End If
If s1(i) And &H8 Then
b(5 + 8 * (i - 1)) = 1
Else
b(5 + 8 * (i - 1)) = 0
End If
If s1(i) And &H4 Then
b(6 + 8 * (i - 1)) = 1
Else
b(6 + 8 * (i - 1)) = 0
End If
If s1(i) And &H2 Then
b(7 + 8 * (i - 1)) = 1
Else
b(7 + 8 * (i - 1)) = 0
End If
If s1(i) And "1" Then
b(8 + 8 * (i - 1)) = 1
Else
b(8 + 8 * (i - 1)) = 0
End If
Next i
For k = 1 To ilen * 8
s2 = s2 & b(k)
If k Mod 8 = 0 Then
s2 = s2
End If
Next k
bit2byte = s2
End Function
Private Sub Command1_Click()
Dim s As String
Dim s2 As String
s = Text1.Text
s2 = bit2byte(s)
Text2.Text = s2
End Sub
Private Sub Command2_Click()
Dim s As String
Dim s1 As String
s = Text2.Text
s1 = byte2bit(s)
Text2.Text = s1
End Sub
相关文章推荐
- iOS 字符串和数字互相转化
- Delphi判断字符串中是否包含汉字,并返回汉字位置
- c#中文字符串与byte数组互相转化
- 将一个正整数转化为二进制并用字符串表示输出
- 判断两个字符串能否互相转化
- 项目案例:二进制文件与十六进制字符串转化常用操作
- java用正则表达式判断字符串中是否仅包含英文字母、数字和汉字
- 字符串和整数互相转化
- c语言实现把‘0’和‘1’字符串转化为二进制压缩保存成二进制文件
- 二进制转化为16进制字符串
- 从一个包含汉字和其他字符的字符串中截取指定字节长度的字符串,不可以出现中文乱码
- MaxCompute UDF系列之如何判断字符串中是否包含汉字
- Java 字符串和时间互相转化 +时间戳
- PHP怎么实现字符串翻转(包含中文汉字)
- 二进制,十进制,十六进制互相转化
- Python中时间戳与时间字符串互相转化
- java把字符串转化为二进制,再把二进制转换成字符串的一个小例子
- ios 字符串和数字互相转化
- 字符串转化为二进制byte[]
- bj-c中字符串和数字互相转化