VBS中转换二进制数据为字符串常用办法
发布: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中转换二进制数据为字符串常用办法相关推荐
- [VBS]转换二进制数据为字符串常用办法
[VBS]转换二进制数据为字符串常用办法 至少有三种以上办法,可以把二进制数据(比如您从ASP的Request.BinaryRead方法得到的数据)转换为字符串. 第一种:使用VBS的MultiByt ...
- java json转二进制数据_JSON字符串中的二进制数据 . 比Base64更好的东西
UTF-8的问题在于它不是最节省空间的编码 . 此外,一些随机二进制字节序列是无效的UTF-8编码 . 因此,您不能将随机二进制字节序列解释为某些UTF-8数据,因为它将是无效的UTF-8编码 . 这 ...
- 在 Web 数据控件中显示二进制数据54
简介 前面的教程中 , 我们介绍了将二进制数据与应用程序的基础数据模型相关联的两种方法 , 并使用FileUpload 控件从浏览器向 Web 服务器的文件系统上载.我们还将了解怎样将上载的二进制数据 ...
- matlab 十六进制数组,【MATLAB】MATLAB中读取二进制数据文件并加入到矩阵中
MATLAB中读取二进制数据文件并加入到矩阵中的应用如下: 如果对c语言十分熟悉的话,应该对fopen,fclose,ftell,fseek,fread,fwrite,feof 这些函数非常熟悉了,在 ...
- sql语句中插入二进制数据
保存二进制数据 这段代码是将数据库中的二进制数据取出插入 保存图片 这段代码是将页面上的图片存入数据库 总之,Sql Server重罚插入二进制数据SqlParameter这个东西.
- layui数据表格中导出所有数据的简易解决办法
layui数据表格中导出所有数据的简易解决办法 官方文档的困惑 解决办法 官方文档的困惑 首先要说明的是:layui在 table 的工具栏内置了数据导出按钮,如果你是用它内置的导出按钮来导出数据,是 ...
- 在XML中发送二进制数据
作者: BUILDER.COM XML通常被认为是用文本来描述数据的一种方法.例如,元素给出了文本名,元素的内容通常是基于文本的.但是有时候你需要输入数据而不是文本到你的XML文档.让我们来考虑你可能 ...
- python3字节转化字符_浅谈 Python3 中对二进制数据 XOR 编码的正确姿势
Python3 中的默认编码是 UTF-8,这给大家写 Python 代码带来了很大的便利,不用再像 Python2.x 那样为数据编码操碎了心.但是,由于全面转向 UTF-8 编码,Python3 ...
- php 使用dataview,ECMAScript6中的二进制数据(ArrayBuffer + TypedArray + DataView)
作者:心叶 时间:2018-04-26 20:33 简单的说,ArrayBuffer就代表了内存中的一段二进制数据,不可以直接读写,只可以通过在上面建立TypedArray视图或DataView视图来 ...
- python字符串中find函数_Python之字符串常用花哨玩法
字符串类型 在python中,字符串类型确实是一种很强大的类型,其中的功能函数更是令人震惊,这多么类都是谁写的,太感谢他了\(^o^)/ 当然,在实际工作中可能用不到那么多的函数,根据需求来嘛,一下介 ...
最新文章
- 新手也能立即上手,用Python90多行代码画出“樱花园”仙境(源码+注释)
- python学习手册笔记——22.模块代码编写基础
- 更精准地生成字幕!哥大Facebook开发AI新框架,多模态融合,性能更强
- android sqlite 单例模式,数据储存之SQLite(单例模式)
- 【转】你可能不知道的Shell
- python得到windows自启动列表
- numpy学习笔记(莫烦python)
- 文件服务器和客户模式有什么区别,客户端和服务器端编程有什么区别?
- 数据库MySQL--基础查询
- 《PowerShell V3——SQL Server 2012数据库自动化运维权威指南》——2.19 使用bcp实施批量导出...
- 在OOW2009上寻宝撞大运续(床上篇)
- java推送Comet_使用Comet4j实现消息推送
- 【2016年第1期】大数据隐私保护技术综述(下)
- html5 header和group
- Variant 数组
- GB18030:蒙文字符方向为什么转了90度
- WIN10虚拟机安装教程
- Spring boot2.0 JpaRepository findOne的使用
- 印度BIS认证标志详解
- Ablation study消融实验
热门文章
- ArcGIS 制作3D规划图纸
- 如何下载行政区划数据
- ios笔试题算法_【2018年最新】iOS面试题之常见算法
- 实习成长之路:下层应用调不到上层方法怎么办?GoogleGuava事件上报来打配合
- Linux下rpm、yum和源码三种安装方式详细介绍
- solr html显示,在SOLR中,如何执行索引. html 文件_solr_开发99编程知识库
- 买空间做网站_企业做网站购买空间的注意事项?
- 计算机应用基础演讲怎么开口,计算机应用基础讲课稿
- arsc编辑器手机版_APK编辑器中文版,任意修改你手机中的APP名称、logo!
- php呼叫平台,什么是PHP运算符“?和“:”呼叫和他们做什么?