加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

如何在VBScript中将二进制数据写入磁盘?

发布时间:2020-12-16 06:37:13 所属栏目:asp.Net 来源:网络整理
导读:我有一个二进制字符串,我需要写入文件.我有一种感觉,这应该是一个简单的过程,但再次,VBScript. FileSystemObject没有任何帮助,因为它会对数据进行清理.使用它的adBinaryMode及其Write方法,Stream对象看起来很有前途,但Write方法需要一个字节数组,而不会接受
我有一个二进制字符串,我需要写入文件.我有一种感觉,这应该是一个简单的过程,但再次,VBScript. FileSystemObject没有任何帮助,因为它会对数据进行清理.使用它的adBinaryMode及其Write方法,Stream对象看起来很有前途,但Write方法需要一个字节数组,而不会接受变量数组.由于VBScript数组都是变体数组,因此这似乎有问题.

那么,我如何将数据写入文件?

编辑:我应该补充说,整个事情必须是VBScript.没有额外的组件.对不起,我也不喜欢它.

解决方法

也可以使用普通的FileSystemObject,这里是我在自定义上传脚本中使用的代码,我很久以前使用在线找到的代码将二进制字符串转换为ASCII:

Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.CreateTextFile("file path here")
objFile.Write(RSBinaryToString(strBinaryContents))
objFile.Close
Set objFile=Nothing
Set objFSO=Nothing

Private Function RSBinaryToString(xBinary)
    'Antonin Foller,http://www.motobit.com
    '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

Function MultiByteToBinary(MultiByte)
    '? 2000 Antonin Foller,http://www.motobit.com
    ' 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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读