发布:dxy 发布日期:2007-3-5 字体:[增加 减小] 类型:转载
至少有三种以上办法,可以把二进制数据(比如您从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) 
'© 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.jb51.net) 详细出处参考:http://www.jb51.net/article/7516.htm

VBS中转换二进制数据为字符串常用办法相关推荐

  1. [VBS]转换二进制数据为字符串常用办法

    [VBS]转换二进制数据为字符串常用办法 至少有三种以上办法,可以把二进制数据(比如您从ASP的Request.BinaryRead方法得到的数据)转换为字符串. 第一种:使用VBS的MultiByt ...

  2. java json转二进制数据_JSON字符串中的二进制数据 . 比Base64更好的东西

    UTF-8的问题在于它不是最节省空间的编码 . 此外,一些随机二进制字节序列是无效的UTF-8编码 . 因此,您不能将随机二进制字节序列解释为某些UTF-8数据,因为它将是无效的UTF-8编码 . 这 ...

  3. 在 Web 数据控件中显示二进制数据54

    简介 前面的教程中 , 我们介绍了将二进制数据与应用程序的基础数据模型相关联的两种方法 , 并使用FileUpload 控件从浏览器向 Web 服务器的文件系统上载.我们还将了解怎样将上载的二进制数据 ...

  4. matlab 十六进制数组,【MATLAB】MATLAB中读取二进制数据文件并加入到矩阵中

    MATLAB中读取二进制数据文件并加入到矩阵中的应用如下: 如果对c语言十分熟悉的话,应该对fopen,fclose,ftell,fseek,fread,fwrite,feof 这些函数非常熟悉了,在 ...

  5. sql语句中插入二进制数据

    保存二进制数据 这段代码是将数据库中的二进制数据取出插入 保存图片 这段代码是将页面上的图片存入数据库 总之,Sql Server重罚插入二进制数据SqlParameter这个东西.

  6. layui数据表格中导出所有数据的简易解决办法

    layui数据表格中导出所有数据的简易解决办法 官方文档的困惑 解决办法 官方文档的困惑 首先要说明的是:layui在 table 的工具栏内置了数据导出按钮,如果你是用它内置的导出按钮来导出数据,是 ...

  7. 在XML中发送二进制数据

    作者: BUILDER.COM XML通常被认为是用文本来描述数据的一种方法.例如,元素给出了文本名,元素的内容通常是基于文本的.但是有时候你需要输入数据而不是文本到你的XML文档.让我们来考虑你可能 ...

  8. python3字节转化字符_浅谈 Python3 中对二进制数据 XOR 编码的正确姿势

    Python3 中的默认编码是 UTF-8,这给大家写 Python 代码带来了很大的便利,不用再像 Python2.x 那样为数据编码操碎了心.但是,由于全面转向 UTF-8 编码,Python3 ...

  9. php 使用dataview,ECMAScript6中的二进制数据(ArrayBuffer + TypedArray + DataView)

    作者:心叶 时间:2018-04-26 20:33 简单的说,ArrayBuffer就代表了内存中的一段二进制数据,不可以直接读写,只可以通过在上面建立TypedArray视图或DataView视图来 ...

  10. python字符串中find函数_Python之字符串常用花哨玩法

    字符串类型 在python中,字符串类型确实是一种很强大的类型,其中的功能函数更是令人震惊,这多么类都是谁写的,太感谢他了\(^o^)/ 当然,在实际工作中可能用不到那么多的函数,根据需求来嘛,一下介 ...

最新文章

  1. 新手也能立即上手,用Python90多行代码画出“樱花园”仙境(源码+注释)
  2. python学习手册笔记——22.模块代码编写基础
  3. 更精准地生成字幕!哥大Facebook开发AI新框架,多模态融合,性能更强
  4. android sqlite 单例模式,数据储存之SQLite(单例模式)
  5. 【转】你可能不知道的Shell
  6. python得到windows自启动列表
  7. numpy学习笔记(莫烦python)
  8. 文件服务器和客户模式有什么区别,客户端和服务器端编程有什么区别?
  9. 数据库MySQL--基础查询
  10. 《PowerShell V3——SQL Server 2012数据库自动化运维权威指南》——2.19 使用bcp实施批量导出...
  11. 在OOW2009上寻宝撞大运续(床上篇)
  12. java推送Comet_使用Comet4j实现消息推送
  13. 【2016年第1期】大数据隐私保护技术综述(下)
  14. html5 header和group
  15. Variant 数组
  16. GB18030:蒙文字符方向为什么转了90度
  17. WIN10虚拟机安装教程
  18. Spring boot2.0 JpaRepository findOne的使用
  19. 印度BIS认证标志详解
  20. Ablation study消融实验

热门文章

  1. ArcGIS 制作3D规划图纸
  2. 如何下载行政区划数据
  3. ios笔试题算法_【2018年最新】iOS面试题之常见算法
  4. 实习成长之路:下层应用调不到上层方法怎么办?GoogleGuava事件上报来打配合
  5. Linux下rpm、yum和源码三种安装方式详细介绍
  6. solr html显示,在SOLR中,如何执行索引. html 文件_solr_开发99编程知识库
  7. 买空间做网站_企业做网站购买空间的注意事项?
  8. 计算机应用基础演讲怎么开口,计算机应用基础讲课稿
  9. arsc编辑器手机版_APK编辑器中文版,任意修改你手机中的APP名称、logo!
  10. php呼叫平台,什么是PHP运算符“?和“:”呼叫和他们做什么?