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

首頁 > 開發 > 綜合 > 正文

[VBS]轉換二進制數據為字符串常用辦法

2024-07-21 02:15:39
字體:
來源:轉載
供稿:網友
至少有三種以上辦法,可以把二進制數據(比如您從asp的request.binaryread方法得到的數據)轉換為字符串。

第一種:使用vbs的multibyte 方法

實例:

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

這個方法非常簡單明了,但是處理大數據流時,比較慢。
建議只用來處理100kb以下的數據。
下面的這個類似的方法,性能稍微好些:
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以下的數據。
第二種方法:使用adodb.recordset
adodb.recordset 可以讓你支持幾乎所有variant支持的數據類型,你可以用它在string和
binary之間轉換。
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 沒有什么限制--除了物理內存之外。這種處理方式是multibyte方式的100倍!你可以用它來處理高達100mb的數據! 這種轉換方式,你也可以用來把multibyte strings轉換為string。下面這個方法把multibyte strings轉換為binary:function multibytetobinary(multibyte)
'&copy; 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
要存儲、獲取二進制數據,從一個本地文件、上傳的二進制數據文件或者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.

商業源碼熱門下載www.html.org.cn

上一篇:adovbs.inc

下一篇:VBS的數據庫操作類,

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 深圳市| 柞水县| 文安县| 红桥区| 麻江县| 武胜县| 苏尼特右旗| 合川市| 沙雅县| 兰州市| 平江县| 肇东市| 北川| 东港市| 石台县| 靖江市| 葵青区| 于田县| 天门市| 绥宁县| 隆回县| 晋中市| 如东县| 平湖市| 云龙县| 红原县| 泰顺县| 和硕县| 景德镇市| 青州市| 乐都县| 柯坪县| 兴安县| 安福县| 天津市| 永宁县| 六盘水市| 拜泉县| 大渡口区| 怀来县| 鲁甸县|