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

至少有三种以上办法,可以把二进制数据(比如您从ASP的Request.BinaryRead方法得到的数据)转换为字符串。

第一种:使用VBS的MultiByte 方法

实例:

 SimpleBinaryToString(Binary)
       I, S
   I = 1  (Binary)
    S = S & (((Binary, I, 1)))
  
  SimpleBinaryToString = S

这个方法非常简单明了,但是处理大数据流时,比较慢。
建议只用来处理100KB以下的数据。
下面的这个类似的方法,性能稍微好些:
 
  
 BinaryToString(Binary)
      
   cl1, cl2, cl3, pl1, pl2, pl3
   L
  cl1 = 1
  cl2 = 1
  cl3 = 1
  L = (Binary)
  
   cl1<=L
    pl3 = pl3 & (((Binary,cl1,1)))
    cl1 = cl1 + 1
    cl3 = cl3 + 1
     cl3>300 
      pl2 = pl2 & pl3
      pl3 = 
      cl3 = 1
      cl2 = cl2 + 1
       cl2>200 
        pl1 = pl1 & pl2
        pl2 = 
        cl2 = 1
      
    
  
  BinaryToString = pl1 & pl2 & pl3

BinaryToString方法比SimpleBinaryToString方法性能高20倍。
建议用来处理2MB以下的数据。
第二种方法:使用ADODB.Recordset
ADODB.Recordset 可以让你支持几乎所有VARIANT支持的数据类型,你可以用它在string和
binary之间转换。
 
  
 RSBinaryToString(xBinary)
      
   Binary
     vartype(xBinary)=8  Binary = MultiByteToBinary(xBinary)  Binary = xBinary
  
   RS, LBinary
   adLongVarChar = 201
   RS = ()
  LBinary = (Binary)
  
   LBinary>0 
    RS.Fields.Append , adLongVarChar, LBinary
    RS.Open
    RS.AddNew
      RS().AppendChunk Binary 
    RS.Update
    RSBinaryToString = RS()
  
    RSBinaryToString = 
  

RSBinaryToString 没有什么限制--除了物理内存之外。
这种处理方式是MultiByte方式的100倍!
你可以用它来处理高达100MB的数据!
 
这种转换方式,你也可以用来把MultiByte strings转换为String。下面这个
方法把MultiByte strings转换为Binary:
 
  
 MultiByteToBinary(MultiByte)
         RS, LMultiByte, Binary
   adLongVarBinary = 205
   RS = ()
  LMultiByte = (MultiByte)
   LMultiByte>0 
    RS.Fields.Append , adLongVarBinary, LMultiByte
    RS.Open
    RS.AddNew
      RS().AppendChunk MultiByte & (0)
    RS.Update
    Binary = RS().GetChunk(LMultiByte)
  
  MultiByteToBinary = Binary

第三种:使用ADODB.Stream
这种方式是比较常用的:
 
  
Function Stream_BinaryToString(Binary, CharSet)
   adTypeText = 2
   adTypeBinary = 1
  
     BinaryStream    BinaryStream = ()
  
    BinaryStream.Type = adTypeBinary
  
    BinaryStream.Open
  BinaryStream.Write Binary
  
  
    BinaryStream.Position = 0
  BinaryStream.Type = adTypeText
  
     (CharSet) > 0 
    BinaryStream.CharSet = CharSet
  
    BinaryStream.CharSet = 
  
  
    Stream_BinaryToString = BinaryStream.ReadText

要存储、获取二进制数据,从一个本地文件、上传的二进制数据文件或者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, VBS
COPYRIGHT 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.
 
郑昀兼做翻译。转贴请注明出处。
http://blog.csdn.net/zhengyun_ustc/archive/2004/04/29/12758.aspx

转载于:https://www.cnblogs.com/vboy/articles/172655.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值