如果我有一個包含二進制值的兩個變量,我該如何追加他們一起作爲一個二進制值?例如,如果我使用WMI讀取兩個REG_BINARY值的註冊表,那麼我希望能夠連接這些值。類型不匹配的如何追加二進制值在VBScript
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