> For the complete documentation index, see [llms.txt](https://chaoses-ib.gitbook.io/directory-opus/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://chaoses-ib.gitbook.io/directory-opus/guan-fang-shou-ce/readme.zh-10/readme.zh-3/readme.zh/blob.zh.md).

# Blob

一个 **Blob** 对象代表一个二进制数据的块。像 *VBScript* 和 *JScript* 这样的脚本语言没有内置的二进制数据支持 - 这个对象可以用来分配一块内存并以类似于 C 这样的低级语言的方式操作它。您可以将 **Blob** 对象与 [**File**](/directory-opus/guan-fang-shou-ce/readme.zh-10/readme.zh-3/readme.zh/file.zh.md) 对象结合使用，从磁盘文件读取或写入二进制数据。

**Blob** 对象可以转换为两种类型的 ActiveX 数组，并且可以从两种类型的 ActiveX 数组转换 - 一种是 *SAFEARRAY* 类型 *VT\_UI1*（称为 **数组**），另一种是 *SAFEARRAY* 类型 *VT\_VARIANT*，每个变体都包含一个 *VT\_UI1*（称为 **VB 数组**）。您可以使用这两种类型的数组之一初始化一个 **Blob**（在通过 **DOpusFactory.Blob** 方法创建它时或使用 **Blob.CopyFrom** 方法时），也可以使用 **ToArray** 和 **ToVBArray** 方法将一个 **Blob** 转换回一个数组。对这些数组类型的支持取决于脚本语言。

您可以通过索引从 0 开始的字节偏移量来读取和写入 **Blob** 中的单个字节。例如，*my\_blob(5) = 128* 将把 blob 中第六个字节的值设置为 128。

| 属性名称 | 返回类型                                                                                                         | 描述                                                                                                                                    |
| ---- | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------- |
| size | *object:*[**FileSize**](/directory-opus/guan-fang-shou-ce/readme.zh-10/readme.zh-3/readme.zh/filesize.zh.md) | 返回一个 [**FileSize**](/directory-opus/guan-fang-shou-ce/readme.zh-10/readme.zh-3/readme.zh/filesize.zh.md) 对象，表示此 **Blob** 的大小（以字节为单位）。 |

| 方法名称      | **参数**                                                                                                                                  | 返回类型                                                                                                         | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| --------- | --------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Compare   | <p><<a href="Blob:source">Blob:source</a>><br>\<int:to><br>\<int:from><br>\<int:size></p>                                               | *int*                                                                                                        | <p>将此 <strong>Blob</strong> 的内容与另一个 <strong>Blob</strong>（或数组）进行比较。默认情况下，将比较两个 blob 的全部内容。允许您配置操作的可选参数是：</p><p>to - 指定要比较的此 <strong>Blob</strong> 中的字节偏移量。默认值为 0。<br>from - 指定要比较的源 <strong>Blob</strong> 中的字节偏移量。默认值为 0。<br>size - 指定要比较的字节数。默认值为源 <strong>Blob</strong> 的全部大小。</p><p>如果两个 blob 相同，则返回值为 <strong>0</strong>。<strong>-1</strong> 的值表示此 blob 小于另一个 blob，<strong>1</strong> 的值表示此 blob 大于另一个 blob。</p>                                                                                                                                                                          |
| CopyFrom  | <p><<a href="Blob:source">Blob:source</a>><br>\<int:to><br>\<int:from><br>\<int:size></p><p><em>或者</em><br><br>\<string><br>\<type></p> | *none*                                                                                                       | <p>将数据从源 <strong>Blob</strong>（或数组）复制到此 <strong>Blob</strong> 中。默认情况下，将把源 <strong>Blob</strong> 的全部内容复制到此 blob 的顶部。允许您配置操作的可选参数是：</p><p>to - 指定要复制到的此 <strong>Blob</strong> 中的字节偏移量。默认值为 0。<br>from - 指定要复制的源 <strong>Blob</strong> 中的字节偏移量。默认值为 0。<br>size - 指定要复制的字节数。默认值为源 <strong>Blob</strong> 的全部大小。</p><p>除了从另一个 <strong>Blob</strong> 复制之外，您还可以使用此方法从字符串初始化一个 <strong>Blob</strong>。默认情况下，<strong>Blob</strong> 将设置为字符串的 Unicode 形式；如果您将 <strong>"utf8"</strong> 作为第二个参数传递，它将使用 UTF8 编码形式的字符串初始化 <strong>Blob</strong>。</p><p>如果此 <strong>Blob</strong> 当前不够大，无法容纳复制的数据，它将自动调整大小。</p> |
| Find      | <p><<a href="Blob:search">Blob:search</a>><br>\<int:from><br>\<int:size></p>                                                            | *object:*[**FileSize**](/directory-opus/guan-fang-shou-ce/readme.zh-10/readme.zh-3/readme.zh/filesize.zh.md) | <p>在 此 <strong>Blob</strong> 的内容中搜索另一个 <strong>Blob</strong>（或数组）中包含的数据。默认情况下，将搜索此 <strong>Blob</strong> 的全部内容。可选的 <strong>from</strong> 参数允许您指定搜索的起始位置，可选的 <strong>size</strong> 参数允许您指定在此 Blob 中要搜索的数据的长度。<br>如果未找到搜索数据，则返回值为 -1，否则返回从 <strong>Blob</strong> 数据开头处的偏移量。</p>                                                                                                                                                                                                                                                                                                                 |
| Free      | *none*                                                                                                                                  | *none*                                                                                                       | 释放与此 **Blob** 关联的内存，并将大小重置为 0。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| Init      | *none*                                                                                                                                  | *none*                                                                                                       | 初始化 **Blob** 的内容（blob 中的每个字节都将设置为 0）。等效于 *Set(0)*。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| Resize    | \<int:size>                                                                                                                             | *none*                                                                                                       | 将 **Blob** 的大小调整为指定的字节数。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| Reverse   | *none*                                                                                                                                  | *none*                                                                                                       | 反转 **Blob** 的内容。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| Set       | <p>\<byte:value><br>\<int:to><br>\<int:size></p>                                                                                        | *none*                                                                                                       | 将 **Blob** 的内容设置为指定的字节值（blob 中的每个字节都将设置为该值）。默认情况下，将影响整个 **Blob**。可选的 *to* 参数允许您指定要开始的字节偏移量，可选的 *size* 参数允许您控制受影响的字节数。                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| ToArray   | <p>\<int:from><br>\<int:size></p>                                                                                                       | <p>SAFEARRAY of<br>VT\_UI1</p>                                                                               | <p>将此 <strong>Blob</strong> 的内容转换为类型为 <em>VT\_UI1</em> 的 <em>SAFEARRAY</em>。默认情况下，将把 <strong>Blob</strong> 的全部内容复制到数组中。允许您配置操作的可选参数是：<br>from - 指定要复制的源 <strong>Blob</strong> 中的字节偏移量。默认值为 0。<br>size - 指定要复制的字节数。默认值为源 <strong>Blob</strong> 的全部大小。</p>                                                                                                                                                                                                                                                                                                                                      |
| ToVBArray | <p>\<int:from><br>\<int:size></p>                                                                                                       | <p>SAFEARRAY of<br>VT\_VARIANT</p>                                                                           | <p>将此 <strong>Blob</strong> 的内容转换为类型为 <em>VT\_VARIANT</em> 的 <em>SAFEARRAY</em>。数组中的每个变体都包含一个 <em>VT\_UI1</em>。默认情况下，将把 <strong>Blob</strong> 的全部内容复制到数组中。允许您配置操作的可选参数是：</p><p>from - 指定要复制的源 <strong>Blob</strong> 中的字节偏移量。默认值为 0。<br>size - 指定要复制的字节数。默认值为源 <strong>Blob</strong> 的全部大小。</p>                                                                                                                                                                                                                                                                                                |
