VB如何实现字符串(包括大小写字母、数字)与二进制的相互转换?

xilu_gong 2005-11-20 05:19:08
以下是我的代码,我现在只能把小写字母转为二进制并且可以再转换回来,数字和大写字母转换后就不对了,谁知道如何解决这个问题?
'=====================================================================================
'字符串转成二进制
Public Function StringToBinary(ByVal VarString As String) As Variant
Dim strBin As Variant
Dim varchar As String
Dim varasc As Long
Dim varlow, varhigh
Dim i As Long
strBin = ""

For i = 1 To Len(VarString)
varchar = Mid(VarString, i, 1)
varasc = Asc(varchar)
If varasc < 0 Then
varasc = varasc + 65535
End If
If varasc > 255 Then
varlow = Left(Hex(Asc(varchar)), 2)
varhigh = Right(Hex(Asc(varchar)), 2)
strBin = strBin & ChrB("&H" & varlow) & ChrB("&H" & varhigh)
Else
strBin = strBin & ChrB(AscB(varchar))
End If
Next
StringToBinary = strBin
End Function

'========================================================================
'二进制转换为字符串
Public Function BinaryToString(ByVal BinaryStr As Variant) As String
Dim lnglen As Long
Dim tmpBin As Variant
Dim strC As String
Dim skipflag As Long
Dim i As Long
skipflag = 0
strC = ""

If Not IsNull(BinaryStr) Then
lnglen = LenB(BinaryStr)
For i = 1 To lnglen
If skipflag = 0 Then
tmpBin = MidB(BinaryStr, i, 1)
If AscB(tmpBin) > 127 Then
strC = strC & Chr(AscW(MidB(BinaryStr, i + 1, 1) & tmpBin))
skipflag = 1
Else
strC = strC & Chr(AscB(tmpBin))
End If
Else
skipflag = 0
End If
Next
End If
BinaryToString = strC
End Function
...全文
2328 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xilu_gong 2005-11-21
  • 打赏
  • 举报
回复
我试了一下northwolves的代码,还是不行。
其实我写这段代码的目的是将一种卡的卡号(卡号是以十六进制字符串表示,所以包含了字符和数字)转换为二进制,然后写入文本文件,给客户卡片的同时附带这个文本文件。在其发卡时我会读出卡号的同时读取文本文件,将二进制转为字符串,在字符串中查找有没有此卡号,如果没有就禁卡发卡。所以我的目的也就是对卡号加密,写成二进制后客户无法打开文本文件自己写入卡号。
字符串abc转换成二进制形式看到的就是乱码了(类似于:藦畽D虀E )
我的那段代码只能将小写字母来回转换
rainstormmaster 2005-11-21
  • 打赏
  • 举报
回复
我也没看明白,楼主详细说说吧:比如说有一字串"abc",转换为2进制之后应该是什么呢
xilu_gong 2005-11-21
  • 打赏
  • 举报
回复
问题解决了,其实代码没问题,主要是我测试时把转出的二进制放到了TextBox框里,然后将TextBox框里的二进制数据再转成字符串。可能是由于放入TextBox的数据被系统自动转为Unicode类型,所以再转就有问题了。
谢谢各位!!
northwolves 2005-11-20
  • 打赏
  • 举报
回复
不是很明白楼主的意思,试试:

Public Function StringToBinary(ByVal VarString As String) As Variant
Dim b() As Byte, strBin As String, i As Integer
b = StrConv(VarString, vbUnicode)
For i = 0 To UBound(b)
strBin = strBin & ChrB(b(i))
Next
StringToBinary = strBin
End Function

Public Function BinaryToString(ByVal BinaryStr As Variant) As String
Dim b() As Byte, i As Integer
ReDim b(1 To LenB(BinaryStr))
For i = 1 To LenB(BinaryStr)
b(i) = AscB(MidB(BinaryStr, i, 1))
Next
BinaryToString = StrConv(b, vbFromUnicode)
End Function
xilu_gong 2005-11-20
  • 打赏
  • 举报
回复
多谢回复!可我用你的函数试了,结果和我的一样啊!
province_ 2005-11-20
  • 打赏
  • 举报
回复
Function getByteString(StringStr)
Dim i,char
For i=1 to Len(StringStr)
char=Mid(StringStr,i,1)
getByteString=getByteString&chrB(AscB(char))
Next
End Function

Function getString(StringBin)
Dim i
getString=""
For i=1 to LenB(StringBin)
getString=getString&chr(AscB(MidB(StringBin,i,1)))
Next
End Function

7,763

社区成员

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

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