至少有三种以上办法,可以把二进制数据(比如您从ASP的Request.BinaryRead方法得到的数据)转换为字符串。
第一种:使用VBS的MultiByte 方法
实例:
Function SimpleBinaryToString
‘SimpleBinaryToString converts binary data
‘to a stringusing MultiByte VBS functions
Dim I, S
For I = 1 To LenB
S = S Chr))
Next
SimpleBinaryToString = S
End Function
这个方法非常简单明了,但是处理大数据流时,比较慢。
建议只用来处理100KB以下的数据。
下面的这个类似的方法,性能稍微好些:
Function BinaryToString
‘Antonin Foller,
http://www.pstruh.cz ‘Optimized version of a simple BinaryToString algorithm.
Dim cl1, cl2, cl3, pl1, pl2, pl3
Dim L
cl1 = 1
cl2 = 1
cl3 = 1
L = LenB
Do While cl1=L
pl3 = pl3 Chr))
cl1 = cl1 + 1
cl3 = cl3 + 1
If cl3300 Then
pl2 = pl2 pl3
pl3 =
cl3 = 1
cl2 = cl2 + 1
If cl2200 Then
pl1 = pl1 pl2
pl2 =
cl2 = 1
End If
End If
Loop
BinaryToString = pl1 pl2 pl3
End Function
BinaryToString方法比SimpleBinaryToString方法性能高20倍。建议用来处理2MB以下的数据。
第二种方法:使用ADODB.Recordset
ADODB.Recordset 可以让你支持几乎所有VARIANT支持的数据类型,你可以用它在string和
binary之间转换。
Function RSBinaryToString
‘Antonin Foller,
http://www.pstruh.cz ‘RSBinaryToString converts binary data
‘to a stringusing ADO recordset
Dim Binary
‘MultiByte data must be converted To VT_UI1VT_ARRAY first.
If vartype=8 Then Binary = MultiByteToBinary Else Binary = xBinary
Dim RS, LBinary
Const adLongVarChar = 201
Set RS = CreateObject
LBinary = LenB
If LBinary0 Then
RS.Fields.Append mBinary, adLongVarChar, LBinary
RS.Open
RS.AddNew
RS.AppendChunk Binary
RS.Update
RSBinaryToString = RS
Else
RSBinaryToString =
End If
End Function
RSBinaryToString 没有什么限制除了物理内存之外。这种处理方式是MultiByte方式的100倍!你可以用它来处理高达100MB的数据! 这种转换方式,你也可以用来把MultiByte strings转换为String。下面这个方法把MultiByte strings转换为Binary:Function MultiByteToBinary
‘copy; 2000 Antonin Foller,
http://www.pstruh.cz