神剑山庄资源网 Design By www.hcban.com
晚上在 QQ 上看到昵称为“乱码”的好友回答了搜搜问问里一个问题:
在VBS中有办法定义字节数组么?
在VBS中有办法定义字节数组么?就是字节子类型数组(VarType是8209的那种)注意不是VB!
但是回答实在是不堪入目,连别人问什么都没搞懂,而且那人居然还满意,真不知道他在想什么。
闲来没事,我来简单回答一下。首先要搞清楚别人在问什么,VBS 是弱类型脚本语言,只有一种数据类型,称为 Variant,但是 Variant 可以进一步分为几种子类型,这里不展开,详见《VBScript 数据类型》。所谓字节子类型数组(VarType是8209的那种),就是子类型为 Byte 的数组(vbByte + vbArray = 17 + 8192 = 8209)。
例如,Msxml2.XMLHTTP 对象的 responseBody 属性返回的就是字节数组:
复制代码 代码如下:
'Author: Demon
'Website: http://demon.tw
'Date: 2012/2/22
Dim http, res
Set http = CreateObject("Msxml2.XMLHTTP")
http.open "GET", "http://demon.tw", False
http.send
res = http.responseBody
WScript.Echo VarType(res), TypeName(res)
再例如,ADODB.Stream 对象的 Read 方法返回的也是字节数组:
复制代码 代码如下:
'Author: Demon
'Website: http://demon.tw
'Date: 2012/2/22
Dim ado, data
Set ado = CreateObject("ADODB.Stream")
ado.Type = 1
ado.Open
ado.LoadFromFile "demon.tw"
data = ado.Read
WScript.Echo VarType(data), TypeName(data)
那么如何在 VBS 中定义一个字节数组呢?有人说那还不简单,用 CByte 函数强制转换一下不就行了?真的是这样么,写个简单的例子测试一下:
复制代码 代码如下:
'Author: Demon
'Website: http://demon.tw
'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: http://demon.tw
'Date: 2012/2/22
Dim xmldoc, node, bytes
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 变量就是字节数组了,如果你知道其他的方法,欢迎不吝赐教。
原文:http://demon.tw/programming/vbs-byte-array.html
在VBS中有办法定义字节数组么?
在VBS中有办法定义字节数组么?就是字节子类型数组(VarType是8209的那种)注意不是VB!
但是回答实在是不堪入目,连别人问什么都没搞懂,而且那人居然还满意,真不知道他在想什么。
闲来没事,我来简单回答一下。首先要搞清楚别人在问什么,VBS 是弱类型脚本语言,只有一种数据类型,称为 Variant,但是 Variant 可以进一步分为几种子类型,这里不展开,详见《VBScript 数据类型》。所谓字节子类型数组(VarType是8209的那种),就是子类型为 Byte 的数组(vbByte + vbArray = 17 + 8192 = 8209)。
例如,Msxml2.XMLHTTP 对象的 responseBody 属性返回的就是字节数组:
复制代码 代码如下:
'Author: Demon
'Website: http://demon.tw
'Date: 2012/2/22
Dim http, res
Set http = CreateObject("Msxml2.XMLHTTP")
http.open "GET", "http://demon.tw", False
http.send
res = http.responseBody
WScript.Echo VarType(res), TypeName(res)
再例如,ADODB.Stream 对象的 Read 方法返回的也是字节数组:
复制代码 代码如下:
'Author: Demon
'Website: http://demon.tw
'Date: 2012/2/22
Dim ado, data
Set ado = CreateObject("ADODB.Stream")
ado.Type = 1
ado.Open
ado.LoadFromFile "demon.tw"
data = ado.Read
WScript.Echo VarType(data), TypeName(data)
那么如何在 VBS 中定义一个字节数组呢?有人说那还不简单,用 CByte 函数强制转换一下不就行了?真的是这样么,写个简单的例子测试一下:
复制代码 代码如下:
'Author: Demon
'Website: http://demon.tw
'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: http://demon.tw
'Date: 2012/2/22
Dim xmldoc, node, bytes
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 变量就是字节数组了,如果你知道其他的方法,欢迎不吝赐教。
原文:http://demon.tw/programming/vbs-byte-array.html
标签:
字节数组,Byte
神剑山庄资源网 Design By www.hcban.com
神剑山庄资源网
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
神剑山庄资源网 Design By www.hcban.com
暂无在VBS中定义字节数组Byte()介绍的评论...
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
2024年06月18日
2024年06月18日
- dnf2022夏日套有必要买吗
- 《超级马里奥大电影》新作将于2026年4月全球上映!
- 《PUI PUI 天竺鼠车车 THE MOVIE MOLMAX》电影定名
- 任天堂已经关闭的游戏服务器中竟然还有玩家在线?
- 女子十二乐坊首张日本大碟《BeautifulEnergy/美丽能源》原版[WAV+CUE]
- 群星1990-中国老歌精粹VOL.1[T123-02银圈版][WAV+CUE]
- Burmester《ArtForTheEarCD-柏林之声3》【WAV+CUE】
- 陶德遗憾没为《老滚5》等推出更多内容 承诺做出改变
- 快来使用吧!WeGame分享《黑神话:悟空》手机壁纸
- 因《鬼屋魔影RE》未达预期 Embracer关闭工作室
- 郑智化 专业音响示范碟《追梦·往日之声精选集 DSD》[WAV+CUE][400MB]
- 妙音唱片《绝对发烧25HQ 头版限量编号 低速原抓》[WAV+CUE][670MB]
- 《张玮伽2024 海浪 HQCDII限量版 天艺》[WAV+CUE][640MB]
- 幽夜默示录其一怎么过?秘境通过攻略分享
- 【原神】枫丹世界任务 | 我们的目标在另一条管道