如何追加二进制值在VBScript

如何追加二进制值在VBScript

问题描述:

如果我有一个包含二进制值的两个变量,我该如何追加他们一起作为一个二进制值?例如,如果我使用WMI读取两个REG_BINARY值的注册表,那么我希望能够连接这些值。类型不匹配的如何追加二进制值在VBScript

VBScript的抱怨,当你尝试用“&”运营商加入。

+0

澄清你的意思是“二进制值”。上半年和下半年的JPG?当它们结合时,你应该拥有什么? – 2008-10-08 20:02:44

为了记录在案,我想VBScript代码为大的用户群为具有失败的机会最小登录脚本。我喜欢ADO对象,但有很多神秘的方法可以打破ADO,所以我避开了ADODB.Stream。

相反,我能写的转换代码,二进制转换为十六进制编码字符串。然后,要回写一个REG_BINARY值,我将它转换为一个整数数组,然后将其赋予SetBinaryValue WMI方法。

注意:WshShell只能处理包含4个字节的REG_BINARY值,所以无法使用。

感谢您的反馈。

也许...

result = CStr(val1) & CStr(val2) 

REG_BINARY值将作为字节数组返回。 VBScript可能会引用变量中的字节数组,并可能将该字节数组作为另一个函数的变体或作为对字节数组的引用。但VBScript本身对数组无能为力。

你将需要一些其他组件从串联的做一些: -

Function ConcatByteArrays(ra, rb) 
    Dim oStream : Set oStream = CreateObject("ADODB.Stream") 
    oStream.Open 
    oStream.Type = 1 'Binary' 
    oStream.Write ra 
    oStream.Write rb 

    oStream.Position = 0 

    ConcatByteArrays = oStream.Read(LenB(ra) + LenB(rb)) 
    oStream.Close 

End Function 

在上面的代码我使用ADODB.Stream对象这是对目前支持的平台上大展身手。

如果你真的有你想连接,那么你可以使用下面的类多个阵列: -

Class ByteArrayBuilder 
    Private moStream 

    Sub Class_Initialize() 
     Set moStream = CreateObject("ADODB.Stream") 
     moStream.Open 
     moStream.Type = 1 
    End Sub 

    Public Sub Append(rabyt) 
     moStream.Write rabyt 
    End Sub 

    Public Property Get Length 
     Length = moStream.Size 
    End Property 

    Public Function GetArray() 
     moStream.Position = 0 
     GetArray = moStream.Read(moStream.Size) 
    End Function 

    Sub Class_Terminate() 
     moStream.Close 
    End Sub 

End Class 

呼叫追加多次,你有数组和检索的的getArray结果数组。