如何追加二进制值在VBScript
问题描述:
如果我有一个包含二进制值的两个变量,我该如何追加他们一起作为一个二进制值?例如,如果我使用WMI读取两个REG_BINARY值的注册表,那么我希望能够连接这些值。类型不匹配的如何追加二进制值在VBScript
VBScript的抱怨,当你尝试用“&”运营商加入。
答
为了记录在案,我想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结果数组。
澄清你的意思是“二进制值”。上半年和下半年的JPG?当它们结合时,你应该拥有什么? – 2008-10-08 20:02:44