国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > VBScript > 正文

VBS中轉(zhuǎn)換二進(jìn)制數(shù)據(jù)為字符串常用辦法

2020-03-24 17:37:02
字體:
供稿:網(wǎng)友
至少有三種以上辦法,可以把二進(jìn)制數(shù)據(jù)(比如您從ASP的Request.BinaryRead方法得到的數(shù)據(jù))轉(zhuǎn)換為字符串

第一種:使用VBS的MultiByte 方法

實(shí)例:

Function SimpleBinaryToString(Binary)
'SimpleBinaryToString converts binary data (VT_UI1 | VT_ARRAY Or MultiByte string)
'to a string (BSTR) using MultiByte VBS functions
Dim I, S
For I = 1 To LenB(Binary)
S = S & Chr(AscB(MidB(Binary, I, 1)))
Next
SimpleBinaryToString = S
End Function

這個(gè)方法非常簡單明了,但是處理大數(shù)據(jù)流時(shí),比較慢。
建議只用來處理100KB以下的數(shù)據(jù)。
下面的這個(gè)類似的方法,性能稍微好些:
Function BinaryToString(Binary)
'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(Binary)

Do While cl1 =L
pl3 = pl3 & Chr(AscB(MidB(Binary,cl1,1)))
cl1 = cl1 + 1
cl3 = cl3 + 1
If cl3 300 Then
pl2 = pl2 & pl3
pl3 = ""
cl3 = 1
cl2 = cl2 + 1
If cl2 200 Then
pl1 = pl1 & pl2
pl2 = ""
cl2 = 1
End If
End If
Loop
BinaryToString = pl1 & pl2 & pl3
End Function
BinaryToString方法比SimpleBinaryToString方法性能高20倍。建議用來處理2MB以下的數(shù)據(jù)。
第二種方法:使用ADODB.Recordset
ADODB.Recordset 可以讓你支持幾乎所有VARIANT支持的數(shù)據(jù)類型,你可以用它在string和
binary之間轉(zhuǎn)換。
Function RSBinaryToString(xBinary)
'Antonin Foller, http://www.pstruh.cz
'RSBinaryToString converts binary data (VT_UI1 | VT_ARRAY Or MultiByte string)
'to a string (BSTR) using ADO recordset

Dim Binary
'MultiByte data must be converted To VT_UI1 | VT_ARRAY first.
If vartype(xBinary)=8 Then Binary = MultiByteToBinary(xBinary) Else Binary = xBinary

Dim RS, LBinary
Const adLongVarChar = 201
Set RS = CreateObject("ADODB.Recordset")
LBinary = LenB(Binary)

If LBinary 0 Then
RS.Fields.Append "mBinary", adLongVarChar, LBinary
RS.Open
RS.AddNew
RS("mBinary").AppendChunk Binary
RS.Update
RSBinaryToString = RS("mBinary")
Else
RSBinaryToString = ""
End If
End Function
RSBinaryToString 沒有什么限制--除了物理內(nèi)存之外。這種處理方式是MultiByte方式的100倍!你可以用它來處理高達(dá)100MB的數(shù)據(jù)! 這種轉(zhuǎn)換方式,你也可以用來把MultiByte strings轉(zhuǎn)換為String。下面這個(gè)方法把MultiByte strings轉(zhuǎn)換為Binary:Function MultiByteToBinary(MultiByte)
' 2000 Antonin Foller, http://www.pstruh.cz
' MultiByteToBinary converts multibyte string To real binary data (VT_UI1 | VT_ARRAY)
' Using recordset
Dim RS, LMultiByte, Binary
Const adLongVarBinary = 205
Set RS = CreateObject("ADODB.Recordset")
LMultiByte = LenB(MultiByte)
If LMultiByte 0 Then
RS.Fields.Append "mBinary", adLongVarBinary, LMultiByte
RS.Open
RS.AddNew
RS("mBinary").AppendChunk MultiByte & ChrB(0)
RS.Update
Binary = RS("mBinary").GetChunk(LMultiByte)
End If
MultiByteToBinary = Binary
End Function
第三種:使用ADODB.Stream這種方式是比較常用的:'Stream_BinaryToString Function
'2003 Antonin Foller, http://www.pstruh.cz
'Binary - VT_UI1 | VT_ARRAY data To convert To a string
'CharSet - charset of the source binary data - default is "us-ascii"
Function Stream_BinaryToString(Binary, CharSet)
Const adTypeText = 2
Const adTypeBinary = 1

'Create Stream object
Dim BinaryStream 'As New Stream
Set BinaryStream = CreateObject("ADODB.Stream")

'Specify stream type - we want To save text/string data.
BinaryStream.Type = adTypeBinary

'Open the stream And write text/string data To the object
BinaryStream.Open
BinaryStream.Write Binary


'Change stream type To binary
BinaryStream.Position = 0
BinaryStream.Type = adTypeText

'Specify charset For the source text (unicode) data.
If Len(CharSet) 0 Then
BinaryStream.CharSet = CharSet
Else
BinaryStream.CharSet = "us-ascii"
End If

'Open the stream And get binary data from the object
Stream_BinaryToString = BinaryStream.ReadText
End Function
要存儲(chǔ)、獲取二進(jìn)制數(shù)據(jù),從一個(gè)本地文件、上傳的二進(jìn)制數(shù)據(jù)文件或者ASP中,可以參考:Pure and Huge ASP file upload with progress.。 Tip keywords: Binary, Byte, Array, VT_UI1, VT_ARRAY, BinaryWrite, BinaryRead, ChrB, InstrB, LeftB, MidB, RightB, ASP, VBSCOPYRIGHT AND PERMITTED USE OF http://www.pstruh.cz/tips WEBSITE. The entire contents of PSTRUH Software website consist of copyright material owned by Antonin Foller, PSTRUH Software.html教程

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 灵璧县| 汉寿县| 兴城市| 汤原县| 巍山| 鄂伦春自治旗| 海丰县| 花莲县| 方城县| 随州市| 昔阳县| 铜山县| 池州市| 新晃| 施甸县| 涟源市| 瓦房店市| 乌苏市| 泰宁县| 双流县| 左云县| 台中县| 新昌县| 龙山县| 章丘市| 平塘县| 山阳县| 印江| 金沙县| 马关县| 济南市| 专栏| 犍为县| 苏尼特左旗| 贵溪市| 东乡族自治县| 石楼县| 沭阳县| 红安县| 资阳市| 平利县|