在VBS中定義位元組陣列Byte 介紹

2022-09-21 08:48:10 字數 2104 閱讀 8402

晚上在 qq 上看到暱稱為「亂碼」的好友回答了搜搜問問裡乙個問題:

在vbs中有辦法定義位元組陣列麼?

在vbs中有辦法定義位元組陣列麼?就是位元組子型別陣列(vartype是8209的那種)注意不是vb!

但是回答實在是不堪入目,連別人問什麼都沒搞懂,而且那人居然還滿意,真不知道他在想什麼。

閒來沒事,我來簡單回答一下。首先要搞清楚別人在問什麼,vbs 是弱型別指令碼語言,只有一種資料型別,稱為 variant,但是 variant 可以進一步分為幾種子型別,這裡不展開,詳見《vbscript 資料型別》。所謂位元組子型別陣列(vartype是8209的那種),就是子型別為 byte 的陣列(vbbyte + vbarray = 17 + 8192 = 8209)。

例如,msxml2.xmlhttp 物件的 responsebody 屬性返回的就是位元組陣列:

複製** **如下:

set http = createobje程式設計客棧ct("msxml2.xmlhttp")

再例如,adodb.stream 物件的 read 方程式設計客棧法返回的也是位元組陣列:

複製** **如下:

'author: demon

'website:

'date: 2012/2/22

dim ado, data

set ado = createobject("adodb.stream")

ado.type = 1

ado.open

ado.loadfromfile "demon.tw"

data = awww.cppcns.comdo.read

wscript.echo vartype(data), typename(data)

那麼如何在 vbs 中定義乙個位元組陣列呢?有人說那還不簡單,用 cbyte 函式強制轉換一下不就行了?真的是這樣麼,寫個簡單的例子測試一下:

複製** **如下:

'author: demon

'website:

'date: 2012/2/22

dim a(9), i

for i = 0 to 9

a(i) = cbyte(i)

next

wscript.echo vartype(a), typename(a)

'輸出 8204 variant()程式輸出 8204 variant(),很可惜,這不是我們想要的。

那麼正確的方法是什麼呢?其實在《用vbs讀寫二進位制檔案的另一種方法》**現過,使用 msxml2.domdocument 物件:

複製** **如下:

'author: demon

'website:

'date: 2012/2/22

dim xmldoc, node, bytes www.cppcns.com

set xmldoc = createobject("msxml2.domdocument")

set node = xmldoc.createelement("binary")

node.datatype = "bin.hex"

'demon.tw 的十六進製制值為

'64 65 6d 6f 6e 2e 74 77

node.text = "64656d6f6e2e7477"

bytes = node.nodetypedvalue

wscript.echo vartype(bytes), typename(bytes)

這樣 bytes 變數就是位元組陣列了,如果你知道其他的方法,歡迎不吝賜教。

原文:/programming/vbs-byte-array.html

本文標題: 在vbs中定義位元組陣列byte()介紹

本文位址:

位元組陣列 Byte

位元組 byte 發音 bait 位元組是通過網路傳輸資訊 或在硬碟或記憶體中儲存資訊 的單位。在ascii碼中,乙個英文本母 不分大小寫 佔乙個位元組的空間,乙個中文漢字佔兩個位元組的空間。符號 英文標點佔乙個位元組,中文標點佔兩個位元組。舉例 英文句號 佔1個位元組的大小,中文句號 佔2個位元組...

byte陣列轉blob型別 位元組陣列流詳解

bytearrayinputstream和bytearrayoutputstream經常用在需要流和陣列之間轉化的情況 說白了,fileinputstream是把檔案當做資料來源。bytearrayinputstream則是把記憶體中的 某個位元組陣列物件 當做資料來源。位元組陣列流只有位元組流,沒...

unity AssetBundle位元組陣列加密

1.加密 對assetbundle的位元組陣列每位進行與key的異或處理 相同為0,不同為1 using system using system.collections.generic using system.io using system.linq using system.text names...