• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    在VBS中定义字节数组Byte()介绍
    晚上在 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实现的发送带Cookie的HTTP请求的代码
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    在VBS中定义字节数组Byte()介绍 在,VBS,中,定义,字节,数组,