# @ohos.buffer (Buffer)
Buffer对象用于表示固定长度的字节序列,是专门存放二进制数据的缓存区。
**推荐使用场景:** 可用于处理大量二进制数据,图片处理、文件接收上传等。
> **说明:**
>
> 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
## 导入模块
```ts
import { buffer } from '@kit.ArkTS';
```
## BufferEncoding
表示支持的编码格式类型。
**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
**系统能力:** SystemCapability.Utils.Lang
| 类型 | 说明 |
| ------- | -------------------- |
| 'ascii' | 表示ascii格式。 |
| 'utf8' | 表示utf8格式。 |
| 'utf-8' | 表示utf8格式。 |
| 'utf16le' | 表示utf16小端序格式。 |
| 'ucs2' | utf16le的别名。 |
| 'ucs-2' | utf16le的别名。 |
| 'base64' | 表示base64格式。 |
| 'base64url' | 表示base64url格式。 |
| 'latin1' | iso-8859-1的别名, 向下兼容ascii格式。 |
| 'binary' | 表示二进制格式。 |
| 'hex' | 表示十六进制格式。 |
## buffer.alloc
alloc(size: number, fill?: string | Buffer | number, encoding?: BufferEncoding): Buffer
创建一定字节长度的Buffer对象,并初始化。
**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
**系统能力:** SystemCapability.Utils.Lang
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| size | number | 是 | 指定的Buffer对象长度,单位:字节。 |
| fill | string \| Buffer \| number | 否 | 填充至新缓存区的值,默认值: 0。 |
| encoding | [BufferEncoding](#bufferencoding) | 否 | 编码格式(当`fill`为string时,才有意义)。 默认值: 'utf8'。 |
**返回值:**
| 类型 | 说明 |
| -------- | -------- |
| Buffer | 返回一个Buffer对象。 |
**错误码:**
以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
| 错误码ID | 错误信息 |
| -------- | -------- |
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
**示例:**
```ts
import { buffer } from '@kit.ArkTS';
let buf1 = buffer.alloc(5);
let buf2 = buffer.alloc(5, 'a');
let buf3 = buffer.alloc(11, 'aGVsbG8gd29ybGQ=', 'base64');
```
## buffer.allocUninitializedFromPool
allocUninitializedFromPool(size: number): Buffer
创建指定大小未被初始化的Buffer对象。内存从缓冲池分配。
创建的Buffer的内容未知,需要使用[fill](#fill)函数来初始化Buffer对象。
**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
**系统能力:** SystemCapability.Utils.Lang
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| size | number | 是 | 指定的Buffer对象长度,单位:字节。 |
**返回值:**
| 类型 | 说明 |
| -------- | -------- |
| Buffer | 未初始化的Buffer实例。 |
**错误码:**
以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
| 错误码ID | 错误信息 |
| -------- | -------- |
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
**示例:**
```ts
import { buffer } from '@kit.ArkTS';
let buf = buffer.allocUninitializedFromPool(10);
buf.fill(0);
```
## buffer.allocUninitialized
allocUninitialized(size: number): Buffer
创建指定大小未被初始化的Buffer实例。内存不从缓冲池分配。
创建的Buffer的内容未知,需要使用[fill](#fill)函数来初始化Buffer对象。
**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
**系统能力:** SystemCapability.Utils.Lang
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| size | number | 是 |指定的Buffer对象长度,单位:字节。 |
**返回值:**
| 类型 | 说明 |
| -------- | -------- |
| Buffer | 未初始化的Buffer实例。 |
**错误码:**
以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
| 错误码ID | 错误信息 |
| -------- | -------- |
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
**示例:**
```ts
import { buffer } from '@kit.ArkTS';
let buf = buffer.allocUninitialized(10);
buf.fill(0);
```
## buffer.byteLength
byteLength(string: string | Buffer | TypedArray | DataView | ArrayBuffer | SharedArrayBuffer, encoding?: BufferEncoding): number
根据不同的编码方法,返回指定字符串的字节数。
**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
**系统能力:** SystemCapability.Utils.Lang
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| string | string \| Buffer \| TypedArray \| DataView \| ArrayBuffer \| SharedArrayBuffer | 是 | 指定字符串。 |
| encoding | [BufferEncoding](#bufferencoding) | 否 | 编码格式。 默认值: 'utf8'。 |
**返回值:**
| 类型 | 说明 |
| -------- | -------- |
| number | 返回指定字符串的字节数。 |
**错误码:**
以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
| 错误码ID | 错误信息 |
| -------- | -------- |
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
**示例:**
```ts
import { buffer } from '@kit.ArkTS';
let str = '\u00bd + \u00bc = \u00be';
console.info(`${str}: ${str.length} characters, ${buffer.byteLength(str, 'utf-8')} bytes`);
// 输出结果:½ + ¼ = ¾: 9 characters, 12 bytes
```
## buffer.compare
compare(buf1: Buffer | Uint8Array, buf2: Buffer | Uint8Array): -1 | 0 | 1
返回两个数组的比较结果,通常用于对Buffer对象数组进行排序。
**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
**系统能力:** SystemCapability.Utils.Lang
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| buf1 | Buffer \| Uint8Array | 是 | 待比较数组。 |
| buf2 | Buffer \| Uint8Array | 是 | 待比较数组。 |
**返回值:**
| 类型 | 说明 |
| -------- | -------- |
| -1 \| 0 \| 1 | 如果buf1与buf2相同,则返回0。
如果排序时buf1位于buf2之后,则返回1。
如果排序时buf1位于buf2之前,则返回-1。 |
**错误码:**
以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
| 错误码ID | 错误信息 |
| -------- | -------- |
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
**示例:**
```ts
import { buffer } from '@kit.ArkTS';
let buf1 = buffer.from('1234');
let buf2 = buffer.from('0123');
let res = buf1.compare(buf2);
console.info(Number(res).toString());
// 输出结果:1
```
## buffer.concat
concat(list: Buffer[] | Uint8Array[], totalLength?: number): Buffer
将数组中的内容复制指定字节长度到新的Buffer对象中并返回。
**系统能力:** SystemCapability.Utils.Lang
**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| list | Buffer[] \| Uint8Array[] | 是 | 实例数组。 |
| totalLength | number | 否 | 需要复制的总字节长度,默认值为0。 |
**返回值:**
| 类型 | 说明 |
| -------- | -------- |
| Buffer | 返回新的Buffer对象。 |
**错误码:**
以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[语言基础类库错误码](errorcode-utils.md)。
| 错误码ID | 错误信息 |
| -------- | -------- |
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
| 10200001 | The value of "length" is out of range. It must be >= 0 and <= uint32 max. Received value is: [length] |
**示例:**
```ts
import { buffer } from '@kit.ArkTS';
let buf1 = buffer.from("1234");
let buf2 = buffer.from("abcd");
let buf = buffer.concat([buf1, buf2]);
console.info(buf.toString('hex'));
// 输出结果:3132333461626364
```
## buffer.from
from(array: number[]): Buffer;
根据指定数组创建新的Buffer对象。
**系统能力:** SystemCapability.Utils.Lang
**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| array | number[] | 是 | 指定数组。 |
**返回值:**
| 类型 | 说明 |
| -------- | -------- |
| Buffer | 新的Buffer对象。 |
**错误码:**
以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
| 错误码ID | 错误信息 |
| -------- | -------- |
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
**示例:**
```ts
import { buffer } from '@kit.ArkTS';
let buf = buffer.from([0x62, 0x75, 0x66, 0x66, 0x65, 0x72]);
console.info(buf.toString('hex'));
// 输出结果:627566666572
```
## buffer.from
from(arrayBuffer: ArrayBuffer | SharedArrayBuffer, byteOffset?: number, length?: number): Buffer
创建指定长度的与`arrayBuffer`共享内存的Buffer对象。
**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
**系统能力:** SystemCapability.Utils.Lang
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| arrayBuffer | ArrayBuffer \| SharedArrayBuffer | 是 | 实例对象。 |
| byteOffset | number | 否 | 字节偏移量,默认值: 0。 |
| length | number | 否 | 字节长度, 默认值: (arrayBuffer.byteLength - byteOffset)。 |
**返回值:**
| 类型 | 说明 |
| -------- | -------- |
| Buffer | 返回一个Buffer对象,与入参对象保持内存共享。 |
**错误码:**
以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[语言基础类库错误码](errorcode-utils.md)。
| 错误码ID | 错误信息 |
| -------- | -------- |
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
| 10200001 | The value of "[byteOffset/length]" is out of range. It must be >= [left range] and <= [right range]. Received value is: [byteOffset/length] |
**示例:**
```ts
import { buffer } from '@kit.ArkTS';
let ab = new ArrayBuffer(10);
let buf = buffer.from(ab, 0, 2);
```
## buffer.from
from(buffer: Buffer | Uint8Array): Buffer
当入参为Buffer对象时,创建并复制入参Buffer对象数据到新的Buffer对象并返回。
当入参为Uint8Array对象时,创建的Buffer对象持有Uint8Array对象的内存并返回,保持数据的内存关联。
**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
**系统能力:** SystemCapability.Utils.Lang
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| buffer | Buffer \| Uint8Array | 是 | 对象数据。 |
**返回值:**
| 类型 | 说明 |
| -------- | -------- |
| Buffer | 新的Buffer对象。 |
**错误码:**
以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
| 错误码ID | 错误信息 |
| -------- | -------- |
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
**示例:**
```ts
import { buffer } from '@kit.ArkTS';
// 以Buffer对象类型进行创建新的Buffer对象
let buf1 = buffer.from('buffer');
let buf2 = buffer.from(buf1);
// 以Uint8Array对象类型进行创建Buffer对象,保持对象间内存共享
let uint8Array = new Uint8Array(10);
let buf3 = buffer.from(uint8Array);
buf3.fill(1)
console.info("uint8Array:", uint8Array)
// 输出结果:1,1,1,1,1,1,1,1,1,1
```
## buffer.from
from(object: Object, offsetOrEncoding: number | string, length: number): Buffer
根据指定的`object`类型数据,创建新的Buffer对象。
**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
**系统能力:** SystemCapability.Utils.Lang
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| object | Object | 是 | 支持Symbol.toPrimitive或valueOf()的对象。 |
| offsetOrEncoding | number \| string | 是 | 字节偏移量或编码格式。 |
| length | number | 是 | 字节长度(此入参仅在object的valueOf()返回值为ArrayBuffer时生效,取值范围:0 <= length <= ArrayBuffer.byteLength, 超出范围时报错: 10200001)。其他情况下可填任意number类型值,该参数不会对结果产生影响。 |
**返回值:**
| 类型 | 说明 |
| -------- | -------- |
| Buffer | 返回新的Buffer对象。 |
**错误码:**
以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
| 错误码ID | 错误信息 |
| -------- | -------- |
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
**示例:**
```ts
import { buffer } from '@kit.ArkTS';
let buf = buffer.from(new String('this is a test'), 'utf8', 14);
```
## buffer.from
from(string: String, encoding?: BufferEncoding): Buffer
根据指定编码格式的字符串,创建新的Buffer对象。
**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
**系统能力:** SystemCapability.Utils.Lang
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| string | String | 是 | 字符串。 |
| encoding | [BufferEncoding](#bufferencoding) | 否 | 编码格式。 默认值: 'utf8'。 |
**返回值:**
| 类型 | 说明 |
| -------- | -------- |
| Buffer | 返回新的Buffer对象。 |
**错误码:**
以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
| 错误码ID | 错误信息 |
| -------- | -------- |
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
**示例:**
```ts
import { buffer } from '@kit.ArkTS';
let buf1 = buffer.from('this is a test');
let buf2 = buffer.from('7468697320697320612074c3a97374', 'hex');
console.info(buf1.toString());
// 输出结果:this is a test
console.info(buf2.toString());
// 输出结果:this is a tést
```
## buffer.isBuffer
isBuffer(obj: Object): boolean
判断`obj`是否为Buffer。
**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
**系统能力:** SystemCapability.Utils.Lang
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| obj | Object | 是 | 判断对象。 |
**返回值:**
| 类型 | 说明 |
| -------- | -------- |
| boolean | 如果obj是Buffer,则返回true,否则返回false。 |
**示例:**
```ts
import { buffer } from '@kit.ArkTS';
let result = buffer.isBuffer(buffer.alloc(10)); // 10: buffer size
console.info("result = " + result);
// 输出结果:result = true
let result1 = buffer.isBuffer(buffer.from('foo'));
console.info("result1 = " + result1);
// 输出结果:result1 = true
let result2 = buffer.isBuffer('a string');
console.info("result2 = " + result2);
// 输出结果:result2 = false
let result3 = buffer.isBuffer([]);
console.info("result3 = " + result3);
// 输出结果:result3 = false
let result4 = buffer.isBuffer(new Uint8Array(1024));
console.info("result4 = " + result4);
// 输出结果:result4 = false
```
## buffer.isEncoding
isEncoding(encoding: string): boolean
判断`encoding`是否为支持的编码格式。
**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
**系统能力:** SystemCapability.Utils.Lang
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| encoding | string | 是 | 编码格式。 |
**返回值:**
| 类型 | 说明 |
| -------- | -------- |
| boolean | 是支持的编码格式返回true,反之则返回false。 |
**示例:**
```ts
import { buffer } from '@kit.ArkTS';
console.info(buffer.isEncoding('utf-8').toString());
// 输出结果:true
console.info(buffer.isEncoding('hex').toString());
// 输出结果:true
console.info(buffer.isEncoding('utf/8').toString());
// 输出结果:false
console.info(buffer.isEncoding('').toString());
// 输出结果:false
```
## buffer.transcode
transcode(source: Buffer | Uint8Array, fromEnc: string, toEnc: string): Buffer
将给定的Buffer或Uint8Array对象从一种字符编码重新编码为另一种。
**系统能力:** SystemCapability.Utils.Lang
**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| source | Buffer \| Uint8Array | 是 | 实例对象。 |
| fromEnc | string | 是 | 当前编码。 支持的格式范围为[BufferEncoding](#bufferencoding)。 |
| toEnc | string | 是 | 目标编码。 支持的格式范围为[BufferEncoding](#bufferencoding)。 |
**返回值:**
| 类型 | 说明 |
| -------- | -------- |
| Buffer | 根据当前编码转换成目标编码,并返回一个新的buffer实例。 |
**错误码:**
以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
| 错误码ID | 错误信息 |
| -------- | -------- |
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
**示例:**
```ts
import { buffer } from '@kit.ArkTS';
let newBuf = buffer.transcode(buffer.from('€'), 'utf-8', 'ascii');
console.info("newBuf = " + newBuf.toString('ascii'));
// 输出结果:newBuf = ,
```
## Buffer
### 属性
**系统能力:** SystemCapability.Utils.Lang
**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
| 名称 | 类型 | 可读 | 可写 | 说明 |
| -------- | -------- | -------- | -------- | -------- |
| length | number | 是 | 否 | Buffer对象的字节长度。 |
| buffer | ArrayBuffer | 是 | 否 | ArrayBuffer对象。 |
| byteOffset | number | 是 | 否 | 当前Buffer所在内存池的偏移量。 |
**错误码:**
以下错误码的详细介绍请参见[语言基础类库错误码](errorcode-utils.md)。
| 错误码ID | 错误信息 |
| -------- | -------- |
| 10200013 | ${propertyName} cannot be set for the buffer that has only a getter. |
**示例:**
```ts
import { buffer } from '@kit.ArkTS';
let buf = buffer.from("1236");
console.info(JSON.stringify(buf.length));
// 输出结果:4
let arrayBuffer = buf.buffer;
console.info(JSON.stringify(new Uint8Array(arrayBuffer)));
// 输出结果:{"0":49,"1":50,"2":51,"3":54}
console.info(JSON.stringify(buf.byteOffset));
// 输出结果:0
```
### compare
compare(target: Buffer | Uint8Array, targetStart?: number, targetEnd?: number, sourceStart?: number, sourceEnd?: number): -1 | 0 | 1
当前Buffer对象与目标Buffer对象进行比较,并返回Buffer在排序中的顺序结果。
**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
**系统能力:** SystemCapability.Utils.Lang
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| target | Buffer \| Uint8Array | 是 | 要比较的实例对象。 |
| targetStart | number | 否 | `target`实例中开始的偏移量。 默认值: 0。 |
| targetEnd | number | 否 | `target`实例中结束的偏移量(不包含结束位置)。 默认值: 目标对象的字节长度。 |
| sourceStart | number | 否 | `this`实例中开始的偏移量。 默认值: 0。 |
| sourceEnd | number | 否 | `this`实例中结束的偏移量(不包含结束位置)。 默认值: 当前对象的字节长度。 |
**返回值:**
| 类型 | 说明 |
| -------- | -------- |
| number | 返回比较结果。-1:当前排列在目标前,0:当前与目标相同,1:当前排列在目标后。 |
**错误码:**
以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[语言基础类库错误码](errorcode-utils.md)。
| 错误码ID | 错误信息 |
| -------- | -------- |
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
| 10200001 | The value of "[targetStart/targetEnd/sourceStart/sourceEnd]" is out of range. |
**示例:**
```ts
import { buffer } from '@kit.ArkTS';
let buf1 = buffer.from([1, 2, 3, 4, 5, 6, 7, 8, 9]);
let buf2 = buffer.from([5, 6, 7, 8, 9, 1, 2, 3, 4]);
console.info(buf1.compare(buf2, 5, 9, 0, 4).toString());
// 输出结果:0
console.info(buf1.compare(buf2, 0, 6, 4).toString());
// 输出结果:-1
console.info(buf1.compare(buf2, 5, 6, 5).toString());
// 输出结果:1
```
### copy
copy(target: Buffer| Uint8Array, targetStart?: number, sourceStart?: number, sourceEnd?: number): number
将`this`实例中指定位置的数据复制到`target`的指定位置上,并返回复制的字节总长度。
**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
**系统能力:** SystemCapability.Utils.Lang
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| target | Buffer \| Uint8Array | 是 | 要复制到的Buffer或Uint8Array实例。 |
| targetStart | number | 否 | `target`实例中开始写入的偏移量。 默认值: 0。 |
| sourceStart | number | 否 | `this`实例中开始复制的偏移量。 默认值: 0。 |
| sourceEnd | number | 否 | `this`实例中结束复制的偏移量(不包含结束位置)。 默认值: 当前对象的字节长度。 |
**返回值:**
| 类型 | 说明 |
| -------- | -------- |
| number | 复制的字节总长度。 |
**错误码:**
以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)和[语言基础类库错误码](errorcode-utils.md)。
| 错误码ID | 错误信息 |
| -------- | -------- |
| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
| 10200001 | The value of "[targetStart/sourceStart/sourceEnd]" is out of range. |
**示例:**
```ts
import { buffer } from '@kit.ArkTS';
let buf1 = buffer.allocUninitializedFromPool(26);
let buf2 = buffer.allocUninitializedFromPool(26).fill('!');
for (let i = 0; i < 26; i++) {
buf1.writeInt8(i + 97, i);
}
buf1.copy(buf2, 8, 16, 20);
console.info(buf2.toString('ascii', 0, 25));
// 输出结果:!!!!!!!!qrst!!!!!!!!!!!!!
```
### entries
entries(): IterableIterator<[number, number]>
返回一个包含key和value的迭代器。
**原子化服务API**:从API version 11 开始,该接口支持在原子化服务中使用。
**系统能力:** SystemCapability.Utils.Lang
**返回值:**
| 类型 | 说明 |
| -------- | -------- |
| IterableIterator<[number, number]> | 包含key和value的迭代器,同时两者皆为number类型。 |
**示例:**
```ts
import { buffer } from '@kit.ArkTS';
let buf = buffer.from('buffer');
let pair = buf.entries();
let next: IteratorResult