# @ohos.fastbuffer (FastBuffer) A **FastBuffer** object is a more efficient buffer container for representing a byte sequence of a fixed length. It is used to store binary data. **Recommended use case**: When constructing a FastBuffer with parameters of known types that are not **Symbol.toPrimitive** or **valueOf()** objects, you are advised to use FastBuffer for efficient handling of large volumes of binary data, such as in image processing and file uploads/downloads. > **NOTE** > > The initial APIs of this module are supported since API version 20. Newly added APIs will be marked with a superscript to indicate their earliest API version. ## Modules to Import ```ts import { fastbuffer } from '@kit.ArkTS'; ``` ## BufferEncoding type BufferEncoding = 'ascii' | 'utf8' | 'utf-8' | 'utf16le' | 'ucs2' | 'ucs-2' | 'base64' | 'base64url' | 'latin1' | 'binary' | 'hex' Enumerates the supported encoding formats. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang | Type | Description | | ------- | -------------------- | | 'ascii' | ASCII format.| | 'utf8' | UTF-8 format.| | 'utf-8' | UTF-8 format.| | 'utf16le' | UTF-16LE format.| | 'ucs2' | Alias of UTF-16LE.| | 'ucs-2' | Alias of UTF-16LE.| | 'base64' | Base64 format.| | 'base64url' | Base64URL format.| | 'latin1' | Alias of iso-8859-1, which is backward compatible with the ASCII format.| | 'binary' | Binary format.| | 'hex' | Hexadecimal format.| ## fastbuffer.alloc alloc(size: number, fill?: string | FastBuffer | number, encoding?: BufferEncoding): FastBuffer Creates and initializes a **FastBuffer** object of the specified length. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | size | number | Yes| Size of the **FastBuffer** object to create, in bytes. Value range: 0 <= size <= UINT32_MAX| | fill | string \| FastBuffer \| number | No| Value to be filled in the buffer. The default value is **0**.| | encoding | [BufferEncoding](#bufferencoding) | No| Encoding format (valid only when **fill** is a string). The default value is **'utf8'**. If an unrecognized encoding format is passed, TypeError is thrown.| **Return value** | Type| Description| | -------- | -------- | | [FastBuffer](#fastbuffer) | **FastBuffer** object created.| **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf1 = fastbuffer.alloc(5); let buf2 = fastbuffer.alloc(5, 'a'); let buf3 = fastbuffer.alloc(11, 'aGVsbG8gd29ybGQ=', 'base64'); console.info(buf2.toString()); // Output: aaaaa console.info(buf3.toString()); // Output: hello world ``` ## fastbuffer.allocUninitializedFromPool allocUninitializedFromPool(size: number): FastBuffer Creates a **FastBuffer** object of the specified size, without initializing it. initializing it. You need to use [fill()](#fill) to initialize the **FastBuffer** object created. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | size | number | Yes| Size of the **FastBuffer** object to create, in bytes. Value range: 0 <= size <= UINT32_MAX| **Return value** | Type| Description| | -------- | -------- | | [FastBuffer](#fastbuffer) | Uninitialized **FastBuffer** object.| **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf = fastbuffer.allocUninitializedFromPool(10); buf.fill(0); // "buf":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ``` ## fastbuffer.allocUninitialized allocUninitialized(size: number): FastBuffer Creates a **FastBuffer** object of the specified size, without initializing it. This API does not allocate memory from the buffer pool. You need to use [fill()](#fill) to initialize the **FastBuffer** object created. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | size | number | Yes|Size of the **FastBuffer** object to create, in bytes. Value range: 0 <= size <= UINT32_MAX| **Return value** | Type| Description| | -------- | -------- | | [FastBuffer](#fastbuffer) | Uninitialized **FastBuffer** object.| **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf = fastbuffer.allocUninitialized(10); buf.fill(0); // "buf":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ``` ## fastbuffer.byteLength byteLength(value: string | FastBuffer | TypedArray | DataView | ArrayBuffer | SharedArrayBuffer, encoding?: BufferEncoding): number Obtains the number of bytes of a string based on the encoding format. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | value | string \| FastBuffer \| TypedArray \| DataView \| ArrayBuffer \| SharedArrayBuffer | Yes| Target string.| | encoding | [BufferEncoding](#bufferencoding) | No| Encoding format. The default value is **'utf8'**. If an unrecognized encoding format is passed, TypeError is thrown.| **Return value** | Type| Description| | -------- | -------- | | number | Number of bytes of the string.| **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let str = '\u00bd + \u00bc = \u00be'; console.info(`${str}: ${str.length} characters, ${fastbuffer.byteLength(str, 'utf-8')} bytes`); // Output: ½ + ¼ = ¾: 9 characters, 12 bytes ``` ## fastbuffer.compare compare(buf1: FastBuffer | Uint8Array, buf2: FastBuffer | Uint8Array): -1 | 0 | 1 Compares two **FastBuffer** objects. This API is used for sorting **FastBuffer** objects. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | buf1 | [FastBuffer](#fastbuffer) \| Uint8Array | Yes| First object to compare.| | buf2 | [FastBuffer](#fastbuffer) \| Uint8Array | Yes| Second object to compare.| **Return value** | Type| Description| | -------- | -------- | | -1 \| 0 \| 1 | Returns **0** if **buf1** is the same as **buf2**.
Returns **1** if **buf1** comes after **buf2** when sorted.
Returns **-1** if **buf1** comes before **buf2** when sorted.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md). | ID| Error Message| | -------- | -------- | | 10200068 | The underlying ArrayBuffer is null or detach. | **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf1 = fastbuffer.from('1234'); let buf2 = fastbuffer.from('0123'); let res = fastbuffer.compare(buf1, buf2); console.info(Number(res).toString()); // Output: 1 ``` ## fastbuffer.concat concat(list: FastBuffer[] | Uint8Array[], totalLength?: number): FastBuffer Copies the content of a specified byte length from an array to a new **FastBuffer** object and returns the concatenated **FastBuffer** object. If the total length of all objects in the array exceeds **totalLength**, the length of the returned result will be truncated to **totalLength**. If the total length of all objects in the array is less than **totalLength**, the excess part of the returned result will be padded with zeros. **System capability**: SystemCapability.Utils.Lang **Atomic service API**: This API can be used in atomic services since API version 20. **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | list | [FastBuffer](#fastbuffer)[] \| Uint8Array[] | Yes| Array of objects to concatenate.| | totalLength | number | No| Total length of bytes to be copied. The default value is **0**.| **Return value** | Type| Description| | -------- | -------- | | [FastBuffer](#fastbuffer) | **FastBuffer** object created.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md). | ID| Error Message| | -------- | -------- | | 10200001 | Range error. Possible causes: The value of the parameter is not within the specified range. | **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf1 = fastbuffer.from("1234"); let buf2 = fastbuffer.from("abcd"); let buf = fastbuffer.concat([buf1, buf2]); console.info(buf.toString('hex')); // Output: 3132333461626364 ``` ## fastbuffer.from from(array: number[]): FastBuffer Creates a **FastBuffer** object with the specified array. **System capability**: SystemCapability.Utils.Lang **Atomic service API**: This API can be used in atomic services since API version 20. **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | array | number[] | Yes| Array to create a **FastBuffer** object.| **Return value** | Type| Description| | -------- | -------- | | [FastBuffer](#fastbuffer) | **FastBuffer** object created.| **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf = fastbuffer.from([0x62, 0x75, 0x66, 0x66, 0x65, 0x72]); console.info(buf.toString('hex')); // Output: 627566666572 ``` ## fastbuffer.from from(arrayBuffer: ArrayBuffer | SharedArrayBuffer, byteOffset?: number, length?: number): FastBuffer Creates a **FastBuffer** object of the specified length that shares memory with ArrayBuffer. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | arrayBuffer | ArrayBuffer \| SharedArrayBuffer | Yes| Target object.| | byteOffset | number | No| Byte offset. The default value is **0**.| | length | number | No| Length of the **FastBuffer** object to create, in bytes. The default value is **arrayBuffer.byteLength** minus **byteOffset**. Value range: 0 <= length <= arrayBuffer.byteLength - byteOffset| **Return value** | Type| Description| | -------- | -------- | | [FastBuffer](#fastbuffer) | **FastBuffer** object created.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md). | ID| Error Message| | -------- | -------- | | 10200001 | Range error. Possible causes: The value of the parameter is not within the specified range. | | 10200068 | The underlying ArrayBuffer is null or detach. | **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let ab = new ArrayBuffer(10); let buf = fastbuffer.from(ab, 0, 2); console.info(buf.length.toString()); // Output: 2 ``` ## fastbuffer.from from(buffer: FastBuffer | Uint8Array): FastBuffer Copies the data of a passed **FastBuffer** object to create a new **FastBuffer** object and returns the new one. Creates a **FastBuffer** object based on the memory of a passed **Uint8Array** object and returns the new object, maintaining the memory association of the data. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | buffer | [FastBuffer](#fastbuffer) \| Uint8Array | Yes| Target object.| **Return value** | Type| Description| | -------- | -------- | | [FastBuffer](#fastbuffer) | **FastBuffer** object created.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md). | ID| Error Message| | -------- | -------- | | 10200068 | The underlying ArrayBuffer is null or detach. | **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; // Create a FastBuffer object of the FastBuffer type. let buf1 = fastbuffer.from('buffer'); let buf2 = fastbuffer.from(buf1); console.info(buf2.toString()); // Output: buffer // Create a FastBuffer object of the Uint8Array type to ensure memory sharing between objects. let uint8Array = new Uint8Array(10); let buf3 = fastbuffer.from(uint8Array); buf3.fill(1) console.info("uint8Array:", uint8Array) // Output: 1,1,1,1,1,1,1,1,1,1 ``` ## fastbuffer.from from(value: string, encoding?: BufferEncoding): FastBuffer Creates a **FastBuffer** object based on a string in the given encoding format. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | value | string | Yes| String.| | encoding | [BufferEncoding](#bufferencoding) | No| Encoding format. The default value is **'utf8'**. If an unrecognized encoding format is passed, TypeError is thrown.| **Return value** | Type| Description| | -------- | -------- | | [FastBuffer](#fastbuffer) | **FastBuffer** object created.| **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf1 = fastbuffer.from('this is a test'); let buf2 = fastbuffer.from('7468697320697320612074c3a97374', 'hex'); console.info(buf1.toString()); // Output: this is a test console.info(buf2.toString()); // Output: this is a tést ``` ## fastbuffer.isBuffer isBuffer(obj: Object): boolean Checks whether the specified object is a **FastBuffer** object. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | obj | Object | Yes| Object to check.| **Return value** | Type| Description| | -------- | -------- | | boolean | Check result. The value **true** is returned if the object is a **FastBuffer** object; otherwise, **false** is returned.| **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let result = fastbuffer.isBuffer(fastbuffer.alloc(10)); // 10: fastbuffer size console.info("result = " + result); // Output: result = true let result1 = fastbuffer.isBuffer(fastbuffer.from('foo')); console.info("result1 = " + result1); // Output: result1 = true let result2 = fastbuffer.isBuffer('a string'); console.info("result2 = " + result2); // Output: result2 = false let result3 = fastbuffer.isBuffer([]); console.info("result3 = " + result3); // Output: result3 = false let result4 = fastbuffer.isBuffer(new Uint8Array(1024)); console.info("result4 = " + result4); // Output: result4 = false ``` ## fastbuffer.isEncoding isEncoding(encoding: string): boolean Checks whether the encoding format is supported. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | encoding | string | Yes| Encoding format.| **Return value** | Type| Description| | -------- | -------- | | boolean | Check result. The value **true** is returned if the encoding format is supported; otherwise, **false** is returned.| **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; console.info(fastbuffer.isEncoding('utf-8').toString()); // Output: true console.info(fastbuffer.isEncoding('hex').toString()); // Output: true console.info(fastbuffer.isEncoding('utf/8').toString()); // Output: false console.info(fastbuffer.isEncoding('').toString()); // Output: false ``` ## fastbuffer.transcode transcode(source: FastBuffer | Uint8Array, fromEnc: string, toEnc: string): FastBuffer Transcodes a **FastBuffer** or **Uint8Array** object from one encoding format to another. This API supports the following encoding formats: 'ascii', 'utf8', 'utf16le', 'ucs2', 'latin1', and 'binary'. **System capability**: SystemCapability.Utils.Lang **Atomic service API**: This API can be used in atomic services since API version 20. **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | source | [FastBuffer](#fastbuffer) \| Uint8Array | Yes| Target object.| | fromEnc | string | Yes| Current encoding format. For details about the supported formats, see [BufferEncoding](#bufferencoding).| | toEnc | string | Yes| Target encoding format. For details about the supported formats, see [BufferEncoding](#bufferencoding).| **Return value** | Type| Description| | -------- | -------- | | [FastBuffer](#fastbuffer) | New **FastBuffer** object in the target encoding format.| **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let newBuf = fastbuffer.transcode(fastbuffer.from('buffer'), 'utf-8', 'ascii'); console.info("newBuf = " + newBuf.toString('ascii')); // Output: newBuf = buffer ``` ## FastBuffer ### Properties **System capability**: SystemCapability.Utils.Lang **Atomic service API**: This API can be used in atomic services since API version 20. | Name| Type| Read-Only| Optional| Description| | -------- | -------- | -------- | -------- | -------- | | length | number | Yes| No| Length of the **FastBuffer** object, in bytes.| | buffer | ArrayBuffer | Yes| No| **ArrayBuffer** object.| | byteOffset | number | Yes| No| Offset of the **FastBuffer** object in the memory pool.| **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf = fastbuffer.from("1236"); console.info(JSON.stringify(buf.length)); // Output: 4 let arrayBuffer = buf.buffer; console.info(JSON.stringify(new Uint8Array(arrayBuffer))); // Output: {"0":49,"1":50,"2":51,"3":54} console.info(JSON.stringify(buf.byteOffset)); // Output: 0 ``` ### compare compare(target: FastBuffer | Uint8Array, targetStart?: number, targetEnd?: number, sourceStart?: number, sourceEnd?: number): -1 | 0 | 1 Compares this **FastBuffer** object with another object. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | target | [FastBuffer](#fastbuffer) \| Uint8Array | Yes| Target **FastBuffer** object to compare.| | targetStart | number | No| Offset to the start of the data to compare in the target **FastBuffer** object. The default value is **0**. Value range: 0 <= targetStart <= target.length| | targetEnd | number | No| Offset to the end of the data to compare in the target **FastBuffer** object (not inclusive). The default value is the length of the target **FastBuffer** object. Value range: 0 <= targetEnd <= target.length| | sourceStart | number | No| Offset to the start of the data to compare in this **FastBuffer** object. The default value is **0**. Value range: 0 <= sourceStart <= this.length| | sourceEnd | number | No| Offset to the end of the data to compare in this **FastBuffer** object (not inclusive). The default value is the length of this **FastBuffer** object. Value range: 0 <= sourceEnd <= this.length| **Return value** | Type| Description| | -------- | -------- | | number | Comparison result.
-1: This object comes before the target object when sorted.
0: The two objects are the same.
1: This object comes after the target object when sorted.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md). | ID| Error Message| | -------- | -------- | | 10200001 | Range error. Possible causes: The value of the parameter is not within the specified range. | | 10200068 | The underlying ArrayBuffer is null or detach. | **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf1 = fastbuffer.from([1, 2, 3, 4, 5, 6, 7, 8, 9]); let buf2 = fastbuffer.from([5, 6, 7, 8, 9, 1, 2, 3, 4]); console.info(buf1.compare(buf2, 5, 9, 0, 4).toString()); // Output: 0 console.info(buf1.compare(buf2, 0, 6, 4).toString()); // Output: -1 console.info(buf1.compare(buf2, 5, 6, 5).toString()); // Output: 1 ``` ### copy copy(target: FastBuffer| Uint8Array, targetStart?: number, sourceStart?: number, sourceEnd?: number): number Copies data at the specified position in this **FastBuffer** object to the specified position in another **FastBuffer** object. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | target | [FastBuffer](#fastbuffer) \| Uint8Array | Yes| **FastBuffer** or **Uint8Array** object to which data is copied.| | targetStart | number | No| Offset to the start position in the target object where data is copied. The default value is **0**. Value range: 0 <= targetStart <= UINT32_MAX| | sourceStart | number | No| Offset to the start position in this **FastBuffer** object where data is copied. The default value is **0**. Value range: 0 <= sourceStart <= UINT32_MAX| | sourceEnd | number | No| Offset to the end position in this **FastBuffer** object (not inclusive). The default value is the length of this **FastBuffer** object. Value range: 0 <= sourceEnd <= this.length| **Return value** | Type| Description| | -------- | -------- | | number | Total length of the data copied, in bytes.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md). | ID| Error Message| | -------- | -------- | | 10200001 | Range error. Possible causes: The value of the parameter is not within the specified range. | | 10200068 | The underlying ArrayBuffer is null or detach. | **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf1 = fastbuffer.allocUninitializedFromPool(26); let buf2 = fastbuffer.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)); // Output: !!!!!!!!qrst!!!!!!!!!!!!! ``` ### entries entries(): IterableIterator<[number, number]> Creates and returns an iterator that contains key-value pairs of this **FastBuffer** object. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Return value** | Type| Description| | -------- | -------- | | IterableIterator<[number, number]> | Iterator that contains the key and value, both of which are of the number type.| **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf = fastbuffer.from('buffer'); let pair = buf.entries(); let next: IteratorResult = pair.next(); while (!next.done) { console.info("fastbuffer: " + next.value); /* Output: buffer: 0,98 fastbuffer: 1,117 fastbuffer: 2,102 fastbuffer: 3,102 fastbuffer: 4,101 fastbuffer: 5,114 */ next = pair.next(); } ``` ### equals equals(otherBuffer: Uint8Array | FastBuffer): boolean Checks whether this **FastBuffer** object is the same as another **FastBuffer** object. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | otherBuffer | Uint8Array \| FastBuffer | Yes| **FastBuffer** object to compare.| **Return value** | Type| Description| | -------- | -------- | | boolean | Check result. The value **true** is returned if the two objects are equal byte by byte; otherwise, **false** is returned.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md). | ID| Error Message| | -------- | -------- | | 10200068 | The underlying ArrayBuffer is null or detach. | **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf1 = fastbuffer.from('ABC'); let buf2 = fastbuffer.from('414243', 'hex'); let buf3 = fastbuffer.from('ABCD'); console.info(buf1.equals(buf2).toString()); // Output: true console.info(buf1.equals(buf3).toString()); // Output: false ``` ### fill fill(value: string | FastBuffer | Uint8Array | number, offset?: number, end?: number, encoding?: BufferEncoding): FastBuffer Fills this **FastBuffer** object at the specified position. By default, data is filled cyclically. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | value | string \| FastBuffer \| Uint8Array \| number | Yes| Value to fill.| | offset | number | No| Offset to the start position in this **FastBuffer** object where data is filled. The default value is **0**. Value range: 0 <= offset <= this.length| | end | number | No| Offset to the end position in this **FastBuffer** object (not inclusive). The default value is the length of this **FastBuffer** object. Value range: 0 <= end <= this.length| | encoding | [BufferEncoding](#bufferencoding) | No| Encoding format (valid only when **value** is a string). The default value is **'utf8'**. If an unrecognized encoding format is passed, TypeError is thrown.| **Return value** | Type| Description| | -------- | -------- | | [FastBuffer](#fastbuffer) | **FastBuffer** object filled with the specified value.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md). | ID| Error Message| | -------- | -------- | | 10200001 | Range error. Possible causes: The value of the parameter is not within the specified range. | | 10200068 | The underlying ArrayBuffer is null or detach. | **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let b = fastbuffer.allocUninitializedFromPool(50).fill('h'); console.info(b.toString()); // Output: hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh ``` ### includes includes(value: string | number | FastBuffer | Uint8Array, byteOffset?: number, encoding?: BufferEncoding): boolean Checks whether this **FastBuffer** object contains the specified value. If **byteOffset** is a positive number, the offset is calculated from 0. If **byteOffset** is a negative number, the offset is calculated from the end. If **byteOffset** is greater than or equal to **this.length**, **false** is returned. If **byteOffset** is less than or equal to **-this.length**, the system checks whether the value exists in the entire FastBuffer. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | value | string \| number \| FastBuffer \| Uint8Array | Yes| Value to match.| | byteOffset | number | No| Number of bytes to skip before starting to check data. If **byteOffset** is a positive number, the offset is calculated from 0. If **byteOffset** is a negative number, the offset is calculated from the end. The default value is **0**.| | encoding | [BufferEncoding](#bufferencoding) | No| Encoding format (valid only when **value** is a string). The default value is **'utf8'**. If an unrecognized encoding format is passed, TypeError is thrown.| **Return value** | Type| Description| | -------- | -------- | | boolean | Check result. The value **true** is returned if the object contains the specified value; otherwise, **false** is returned.| **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf = fastbuffer.from('this is a buffer'); console.info(buf.includes('this').toString()); // Output: true console.info(buf.includes('be').toString()); // Output: false ``` ### indexOf indexOf(value: string | number | FastBuffer | Uint8Array, byteOffset?: number, encoding?: BufferEncoding): number Obtains the index of the first occurrence of the specified value in this **FastBuffer** object. If no match is found, **-1** is returned. If **byteOffset** is a positive number, the offset is calculated from 0. If **byteOffset** is a negative number, the offset is calculated from the end. If **byteOffset** is greater than or equal to **this.length**, **-1** is returned. If **byteOffset** is less than or equal to **-this.length**, the index of the first occurrence of the specified value in the FastBuffer is returned. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | value | string \| number \| FastBuffer \| Uint8Array | Yes| Value to match.| | byteOffset | number | No| Number of bytes to skip before starting to check data. If **byteOffset** is a positive number, the offset is calculated from 0. If **byteOffset** is a negative number, the offset is calculated from the end. The default value is **0**.| | encoding | [BufferEncoding](#bufferencoding) | No| Encoding format (valid only when **value** is a string). The default value is **'utf8'**. If an unrecognized encoding format is passed, TypeError is thrown.| **Return value** | Type| Description| | -------- | -------- | | number | Index obtained.| **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf = fastbuffer.from('this is a buffer'); console.info(buf.indexOf('this').toString()); // Output: 0 console.info(buf.indexOf('is').toString()); // Output: 2 ``` ### keys keys(): IterableIterator<number> Creates and returns an iterator that contains the keys of this **FastBuffer** object. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Return value** | Type| Description| | -------- | -------- | | IterableIterator<number> | Iterator created.| **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf = fastbuffer.from('buffer'); let numbers = Array.from(buf.keys()); for (const key of numbers) { console.info(key.toString()); /* Output: 0 1 2 3 4 5 */ } ``` ### values values(): IterableIterator<number> Creates and returns an iterator that contains the values of this **FastBuffer** object. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Return value** | Type| Description| | -------- | -------- | | IterableIterator<number> | Iterator.| **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf1 = fastbuffer.from('buffer'); let pair = buf1.values() let next:IteratorResult = pair.next() while (!next.done) { console.info(next.value.toString()); /* Output: 98 117 102 102 101 114 */ next = pair.next(); } ``` ### lastIndexOf lastIndexOf(value: string | number | FastBuffer | Uint8Array, byteOffset?: number, encoding?: BufferEncoding): number Obtains the index of the last occurrence of the specified value in this **FastBuffer** object. If no match is found, **-1** is returned. If **byteOffset** is a positive number, the offset is calculated from 0. If **byteOffset** is a negative number, the offset is calculated from the end. If **byteOffset** is greater than or equal to **this.length**, the index of the last occurrence of the specified value in the FastBuffer is returned. If **byteOffset** is less than or equal to **this.length**, **-1** is returned. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | value | string \| number \| FastBuffer \| Uint8Array | Yes| Value to match.| | byteOffset | number | No| Number of bytes to skip before starting to check data. If **byteOffset** is a positive number, the offset is calculated from 0. If **byteOffset** is a negative number, the offset is calculated from the end. The default value is **this.length - 1**.| | encoding | [BufferEncoding](#bufferencoding) | No| Encoding format (valid only when **value** is a string). The default value is **'utf8'**.| **Return value** | Type| Description| | -------- | -------- | | number | Index obtained.| **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf = fastbuffer.from('this buffer is a buffer'); console.info(buf.lastIndexOf('this').toString()); // Output: 0 console.info(buf.lastIndexOf('buffer').toString()); // Output: 17 ``` ### readBigInt64BE readBigInt64BE(offset?: number): bigint Reads a 64-bit, big-endian, signed big integer from this **FastBuffer** object at the specified offset. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | offset | number | No| Number of bytes to skip before starting to read data. The default value is **0**. Value range: 0 <= offset <= this.length - 8| **Return value** | Type| Description| | -------- | -------- | | bigint | Data read.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md). | ID| Error Message| | -------- | -------- | | 10200001 | The value of "offset" is out of range. It must be >= 0 and <= buf.length - 8. Received value is: [offset]. | **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf = fastbuffer.from([0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78]); console.info(buf.readBigInt64BE(0).toString()); // Output: 7161960797921896816 let buf1 = fastbuffer.allocUninitializedFromPool(8); let result = buf1.writeBigInt64BE(BigInt(0x0102030405060708), 0); console.info("result = " + result); // Output: result = 8 ``` ### readBigInt64LE readBigInt64LE(offset?: number): bigint Reads a 64-bit, little-endian, signed big integer from this **FastBuffer** object at the specified offset. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | offset | number | No| Number of bytes to skip before starting to read data. The default value is **0**. Value range: 0 <= offset <= this.length - 8| **Return value** | Type| Description| | -------- | -------- | | bigint | Data read.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md). | ID| Error Message| | -------- | -------- | | 10200001 | The value of "offset" is out of range. It must be >= 0 and <= buf.length - 8. Received value is: [offset]. | **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf = fastbuffer.from([0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78]); console.info(buf.readBigInt64LE(0).toString()); // Output: 8100120198111388771 let buf1 = fastbuffer.allocUninitializedFromPool(8); let result = buf1.writeBigInt64LE(BigInt(0xcafafecacefade), 0); console.info("result = " + result); // Output: result = 8 ``` ### readBigUInt64BE readBigUInt64BE(offset?: number): bigint Reads a 64-bit, big-endian, unsigned big integer from this **FastBuffer** object at the specified offset. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | offset | number | No| Number of bytes to skip before starting to read data. The default value is **0**. Value range: 0 <= offset <= this.length - 8| **Return value** | Type| Description| | -------- | -------- | | bigint | Data read.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md). | ID| Error Message| | -------- | -------- | | 10200001 | The value of "offset" is out of range. It must be >= 0 and <= buf.length - 8. Received value is: [offset]. | **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf = fastbuffer.from([0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78]); console.info(buf.readBigUInt64BE(0).toString()); // Output: 7161960797921896816 let buf1 = fastbuffer.allocUninitializedFromPool(8); let result = buf1.writeBigUInt64BE(BigInt(0xdecafafecacefade), 0); console.info("result = " + result); // Output: result = 8 ``` ### readBigUInt64LE readBigUInt64LE(offset?: number): bigint Reads a 64-bit, little-endian, unsigned big integer from this **FastBuffer** object at the specified offset. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | offset | number | No| Number of bytes to skip before starting to read data. The default value is **0**. Value range: 0 <= offset <= this.length - 8| **Return value** | Type| Description| | -------- | -------- | | bigint | Data read.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md). | ID| Error Message| | -------- | -------- | | 10200001 | The value of "offset" is out of range. It must be >= 0 and <= buf.length - 8. Received value is: [offset]. | **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf = fastbuffer.from([0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78]); console.info(buf.readBigUInt64LE(0).toString()); // Output: 8100120198111388771 let buf1 = fastbuffer.allocUninitializedFromPool(8); let result = buf1.writeBigUInt64BE(BigInt(0xdecafafecacefade), 0); console.info("result = " + result); // Output: result = 8 ``` ### readDoubleBE readDoubleBE(offset?: number): number Reads a 64-bit, big-endian, double-precision floating-point number from this **FastBuffer** object at the specified offset. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | offset | number | No| Number of bytes to skip before starting to read data. The default value is **0**. Value range: 0 <= offset <= this.length - 8| **Return value** | Type| Description| | -------- | -------- | | number | Data read.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md). | ID| Error Message| | -------- | -------- | | 10200001 | The value of "offset" is out of range. It must be >= 0 and <= buf.length - 8. Received value is: [offset]. | **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf = fastbuffer.from([1, 2, 3, 4, 5, 6, 7, 8]); console.info(buf.readDoubleBE(0).toString()); // Output: 8.20788039913184e-304 let buf1 = fastbuffer.allocUninitializedFromPool(8); let result = buf1.writeDoubleBE(123.456, 0); console.info("result = " + result); // Output: result = 8 ``` ### readDoubleLE readDoubleLE(offset?: number): number Reads a 64-bit, little-endian, double-precision floating-point number from this **FastBuffer** object at the specified offset. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | offset | number | No| Number of bytes to skip before starting to read data. The default value is **0**. Value range: 0 <= offset <= this.length - 8| **Return value** | Type| Description| | -------- | -------- | | number | Data read.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md). | ID| Error Message| | -------- | -------- | | 10200001 | The value of "offset" is out of range. It must be >= 0 and <= buf.length - 8. Received value is: [offset]. | **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf = fastbuffer.from([1, 2, 3, 4, 5, 6, 7, 8]); console.info(buf.readDoubleLE(0).toString()); // Output: 5.447603722011605e-270 let buf1 = fastbuffer.allocUninitializedFromPool(8); let result = buf1.writeDoubleLE(123.456, 0); console.info("result = " + result); // Output: result = 8 ``` ### readFloatBE readFloatBE(offset?: number): number Reads a 32-bit, big-endian, single-precision floating-point number from this **FastBuffer** object at the specified offset. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | offset | number | No| Number of bytes to skip before starting to read data. The default value is **0**. Value range: 0 <= offset <= this.length - 4| **Return value** | Type| Description| | -------- | -------- | | number | Data read.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md). | ID| Error Message| | -------- | -------- | | 10200001 | The value of "offset" is out of range. It must be >= 0 and <= buf.length - 4. Received value is: [offset]. | **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf = fastbuffer.from([1, 2, 3, 4, 5, 6, 7, 8]); console.info(buf.readFloatBE(0).toString()); // Output: 2.387939260590663e-38 let buf1 = fastbuffer.allocUninitializedFromPool(4); let result = buf1.writeFloatBE(0xcabcbcbc, 0); console.info("result = " + result); // Output: result = 4 ``` ### readFloatLE readFloatLE(offset?: number): number Reads a 32-bit, little-endian, single-precision floating-point number from this **FastBuffer** object at the specified offset. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | offset | number | No| Number of bytes to skip before starting to read data. The default value is **0**. Value range: 0 <= offset <= this.length - 4| **Return value** | Type| Description| | -------- | -------- | | number | Data read.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md). | ID| Error Message| | -------- | -------- | | 10200001 | The value of "offset" is out of range. It must be >= 0 and <= buf.length - 4. Received value is: [offset]. | **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf = fastbuffer.from([1, 2, 3, 4, 5, 6, 7, 8]); console.info(buf.readFloatLE(0).toString()); // Output: 1.539989614439558e-36 let buf1 = fastbuffer.allocUninitializedFromPool(4); let result = buf1.writeFloatLE(0xcabcbcbc, 0); console.info("result = " + result); // Output: result = 4 ``` ### readInt8 readInt8(offset?: number): number Reads an 8-bit signed integer from this **FastBuffer** object at the specified offset. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | offset | number | No| Number of bytes to skip before starting to read data. The default value is **0**. Value range: 0 <= offset <= this.length - 1| **Return value** | Type| Description| | -------- | -------- | | number | Data read.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md). | ID| Error Message| | -------- | -------- | | 10200001 | The value of "offset" is out of range. It must be >= 0 and <= buf.length - 1. Received value is: [offset]. | **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf = fastbuffer.from([-1, 5]); console.info(buf.readInt8(0).toString()); // Output: -1 console.info(buf.readInt8(1).toString()); // Output: 5 let buf1 = fastbuffer.allocUninitializedFromPool(2); let result = buf1.writeInt8(0x12); console.info("result = " + result); // Output: result = 1 ``` ### readInt16BE readInt16BE(offset?: number): number Reads a 16-bit, big-endian, signed integer from this **FastBuffer** object at the specified offset. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | offset | number | No| Number of bytes to skip before starting to read data. The default value is **0**. Value range: 0 <= offset <= this.length - 2| **Return value** | Type| Description| | -------- | -------- | | number | Data read.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md). | ID| Error Message| | -------- | -------- | | 10200001 | The value of "offset" is out of range. It must be >= 0 and <= buf.length - 2. Received value is: [offset]. | **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf = fastbuffer.from([0, 5]); console.info(buf.readInt16BE(0).toString()); // Output: 5 let buf1 = fastbuffer.alloc(2); let result = buf1.writeInt16BE(0x1234, 0); console.info("result = " + result); // Output: result = 2 ``` ### readInt16LE readInt16LE(offset?: number): number Reads a 16-bit, little-endian, signed integer from this **FastBuffer** object at the specified offset. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | offset | number | No| Number of bytes to skip before starting to read data. The default value is **0**. Value range: 0 <= offset <= this.length - 2| **Return value** | Type| Description| | -------- | -------- | | number | Data read.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md). | ID| Error Message| | -------- | -------- | | 10200001 | The value of "offset" is out of range. It must be >= 0 and <= buf.length - 2. Received value is: [offset]. | **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf = fastbuffer.from([0, 5]); console.info(buf.readInt16LE(0).toString()); // Output: 1280 let buf1 = fastbuffer.alloc(2); let result = buf1.writeInt16BE(0x1234, 0); console.info("result = " + result); // Output: result = 2 ``` ### readInt32BE readInt32BE(offset?: number): number Reads a 32-bit, big-endian, signed integer from this **FastBuffer** object at the specified offset. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | offset | number | No| Number of bytes to skip before starting to read data. The default value is **0**. Value range: 0 <= offset <= this.length - 4| **Return value** | Type| Description| | -------- | -------- | | number | Data read.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md). | ID| Error Message| | -------- | -------- | | 10200001 | The value of "offset" is out of range. It must be >= 0 and <= buf.length - 4. Received value is: [offset]. | **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf = fastbuffer.from([0, 0, 0, 5]); console.info(buf.readInt32BE(0).toString()); // Output: 5 let buf1 = fastbuffer.alloc(4); let result = buf1.writeInt32BE(0x12345678, 0); console.info("result = " + result); // Output: result = 4 ``` ### readInt32LE readInt32LE(offset?: number): number Reads a 32-bit, little-endian, signed integer from this **FastBuffer** object at the specified offset. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | offset | number | No| Number of bytes to skip before starting to read data. The default value is **0**. Value range: 0 <= offset <= this.length - 4| **Return value** | Type| Description| | -------- | -------- | | number | Data read.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md). | ID| Error Message| | -------- | -------- | | 10200001 | The value of "offset" is out of range. It must be >= 0 and <= buf.length - 4. Received value is: [offset]. | **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf = fastbuffer.from([0, 0, 0, 5]); console.info(buf.readInt32LE(0).toString()); // Output: 83886080 let buf1 = fastbuffer.alloc(4); let result = buf1.writeInt32BE(0x12345678, 0); console.info("result = " + result); // Output: result = 4 ``` ### readIntBE readIntBE(offset: number, byteLength: number): number Reads the specified number of bytes from this **FastBuffer** object at the specified offset, and interprets the result as a big-endian, two's complement signed value that supports up to 48 bits of precision. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | offset | number | Yes| Number of bytes to skip before starting to read data. The default value is **0**. Value range: 0 <= offset <= this.length - byteLength| | byteLength | number | Yes| Number of bytes to read. Value range: 1 <= byteLength <= 6| **Return value** | Type| Description| | -------- | -------- | | number | Data read. If the offset is a decimal, undefined is returned.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md). | ID| Error Message| | -------- | -------- | | 10200001 | The value of "[param]" is out of range. It must be >= [left range] and <= [right range]. Received value is: [param] | **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf = fastbuffer.from("ab"); let num = buf.readIntBE(0, 1); console.info(num.toString()); // Output: 97 let buf1 = fastbuffer.allocUninitializedFromPool(6); let result = buf1.writeIntBE(0x123456789011, 0, 6); console.info("result = " + result); // Output: result = 6 ``` ### readIntLE readIntLE(offset: number, byteLength: number): number Reads the specified number of bytes from this **FastBuffer** object at the specified offset and interprets the result as a little-endian, two's complement signed value that supports up to 48 bits of precision. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | offset | number | Yes| Number of bytes to skip before starting to read data. The default value is **0**. Value range: 0 <= offset <= this.length - byteLength| | byteLength | number | Yes| Number of bytes to read. Value range: 1 <= byteLength <= 6| **Return value** | Type| Description| | -------- | -------- | | number | Data read. If the offset is a decimal, undefined is returned.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md). | ID| Error Message| | -------- | -------- | | 10200001 | The value of "[param]" is out of range. It must be >= [left range] and <= [right range]. Received value is: [param] | **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf = fastbuffer.from([0x12, 0x34, 0x56, 0x78, 0x90, 0xab]); console.info(buf.readIntLE(0, 6).toString(16)); // Output: -546f87a9cbee let buf1 = fastbuffer.allocUninitializedFromPool(6); let result = buf1.writeIntLE(0x123456789011, 0, 6); console.info("result = " + result); // Output: result = 6 ``` ### readUInt8 readUInt8(offset?: number): number Reads an 8-bit unsigned integer from this **FastBuffer** object at the specified offset. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | offset | number | No| Number of bytes to skip before starting to read data. The default value is **0**. Value range: 0 <= offset <= this.length - 1| **Return value** | Type| Description| | -------- | -------- | | number | Data read.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md). | ID| Error Message| | -------- | -------- | | 10200001 | The value of "offset" is out of range. It must be >= 0 and <= buf.length - 1. Received value is: [offset]. | **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf = fastbuffer.from([1, -2]); console.info(buf.readUInt8(0).toString()); // Output: 1 console.info(buf.readUInt8(1).toString()); // Output: 254 let buf1 = fastbuffer.allocUninitializedFromPool(4); let result = buf1.writeUInt8(0x42); console.info("result = " + result); // Output: result = 1 ``` ### readUInt16BE readUInt16BE(offset?: number): number Reads a 16-bit, big-endian, unsigned integer from this **FastBuffer** object at the specified offset. **System capability**: SystemCapability.Utils.Lang **Atomic service API**: This API can be used in atomic services since API version 20. **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | offset | number | No| Number of bytes to skip before starting to read data. The default value is **0**. Value range: 0 <= offset <= this.length - 2| **Return value** | Type| Description| | -------- | -------- | | number | Data read.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md). | ID| Error Message| | -------- | -------- | | 10200001 | The value of "offset" is out of range. It must be >= 0 and <= buf.length - 2. Received value is: [offset]. | **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf = fastbuffer.from([0x12, 0x34, 0x56]); console.info(buf.readUInt16BE(0).toString(16)); // Output: 1234 console.info(buf.readUInt16BE(1).toString(16)); // Output: 3456 let buf1 = fastbuffer.allocUninitializedFromPool(4); let result = buf1.writeUInt16BE(0x1234, 0); console.info("result = " + result); // Output: result = 2 ``` ### readUInt16LE readUInt16LE(offset?: number): number Reads a 16-bit, little-endian, unsigned integer from this **FastBuffer** object at the specified offset. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | offset | number | No| Number of bytes to skip before starting to read data. The default value is **0**. Value range: 0 <= offset <= this.length - 2| **Return value** | Type| Description| | -------- | -------- | | number | Data read.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md). | ID| Error Message| | -------- | -------- | | 10200001 | The value of "offset" is out of range. It must be >= 0 and <= buf.length - 2. Received value is: [offset]. | **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf = fastbuffer.from([0x12, 0x34, 0x56]); console.info(buf.readUInt16LE(0).toString(16)); // Output: 3412 console.info(buf.readUInt16LE(1).toString(16)); // Output: 5634 let buf1 = fastbuffer.allocUninitializedFromPool(4); let result = buf1.writeUInt16LE(0x1234, 0); console.info("result = " + result); // Output: result = 2 ``` ### readUInt32BE readUInt32BE(offset?: number): number Reads a 32-bit, big-endian, unsigned integer from this **FastBuffer** object at the specified offset. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | offset | number | No| Number of bytes to skip before starting to read data. The default value is **0**. Value range: 0 <= offset <= this.length - 4| **Return value** | Type| Description| | -------- | -------- | | number | Data read.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md). | ID| Error Message| | -------- | -------- | | 10200001 | The value of "offset" is out of range. It must be >= 0 and <= buf.length - 4. Received value is: [offset]. | **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf = fastbuffer.from([0x12, 0x34, 0x56, 0x78]); console.info(buf.readUInt32BE(0).toString(16)); // Output: 12345678 let buf1 = fastbuffer.allocUninitializedFromPool(4); let result = buf1.writeUInt32BE(0x12345678, 0); console.info("result = " + result); // Output: result = 4 ``` ### readUInt32LE readUInt32LE(offset?: number): number Reads a 32-bit, little-endian, unsigned integer from this **FastBuffer** object at the specified offset. **System capability**: SystemCapability.Utils.Lang **Atomic service API**: This API can be used in atomic services since API version 20. **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | offset | number | No| Number of bytes to skip before starting to read data. The default value is **0**. Value range: 0 <= offset <= this.length - 4| **Return value** | Type| Description| | -------- | -------- | | number | Data read.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md). | ID| Error Message| | -------- | -------- | | 10200001 | The value of "offset" is out of range. It must be >= 0 and <= buf.length - 4. Received value is: [offset]. | **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf = fastbuffer.from([0x12, 0x34, 0x56, 0x78]); console.info(buf.readUInt32LE(0).toString(16)); // Output: 78563412 let buf1 = fastbuffer.allocUninitializedFromPool(4); let result = buf1.writeUInt32LE(0x12345678, 0); console.info("result = " + result); // Output: result = 4 ``` ### readUIntBE readUIntBE(offset: number, byteLength: number): number Reads the specified number of bytes from this **FastBuffer** object at the specified offset, and interprets the result as an unsigned, big-endian integer that supports up to 48 bits of precision. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | offset | number | Yes| Number of bytes to skip before starting to read data. The default value is **0**. Value range: 0 <= offset <= this.length - byteLength| | byteLength | number | Yes| Number of bytes to read. Value range: 1 <= byteLength <= 6| **Return value** | Type| Description| | -------- | -------- | | number | Data read. If the offset is a decimal, undefined is returned.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md). | ID| Error Message| | -------- | -------- | | 10200001 | The value of "[param]" is out of range. It must be >= [left range] and <= [right range]. Received value is: [param] | **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf = fastbuffer.from([0x12, 0x34, 0x56, 0x78, 0x90, 0xab]); console.info(buf.readUIntBE(0, 6).toString(16)); // Output: 1234567890ab let buf1 = fastbuffer.allocUninitializedFromPool(4); let result = buf1.writeUIntBE(0x13141516, 0, 4); console.info("result = " + result); // Output: result = 4 ``` ### readUIntLE readUIntLE(offset: number, byteLength: number): number Reads the specified number of bytes from this **FastBuffer** object at the specified offset, and interprets the result as an unsigned, little-endian integer that supports up to 48 bits of precision. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | offset | number | Yes| Number of bytes to skip before starting to read data. The default value is **0**. Value range: 0 <= offset <= this.length - byteLength| | byteLength | number | Yes| Number of bytes to read. Value range: 1 <= byteLength <= 6| **Return value** | Type| Description| | -------- | -------- | | number | Data read. If the offset is a decimal, undefined is returned.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md). | ID| Error Message| | -------- | -------- | | 10200001 | The value of "[param]" is out of range. It must be >= [left range] and <= [right range]. Received value is: [param] | **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf = fastbuffer.from([0x12, 0x34, 0x56, 0x78, 0x90, 0xab]); console.info(buf.readUIntLE(0, 6).toString(16)); // Output: ab9078563412 let buf1 = fastbuffer.allocUninitializedFromPool(4); let result = buf1.writeUIntLE(0x13141516, 0, 4); console.info("result = " + result); // Output: result = 4 ``` ### subarray subarray(start?: number, end?: number): FastBuffer Truncates this **FastBuffer** object from the specified position to create a new **FastBuffer** object. **System capability**: SystemCapability.Utils.Lang **Atomic service API**: This API can be used in atomic services since API version 20. **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | start | number | No| Offset to the start position in this **FastBuffer** object where data is truncated. The default value is **0**.| | end | number | No| Offset to the end position in this **FastBuffer** object (not inclusive). The default value is the length of this **FastBuffer** object. Value range: start <= end <= this.length| **Return value** | Type| Description| | -------- | -------- | | FastBuffer | **FastBuffer** object created.| **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf1 = fastbuffer.allocUninitializedFromPool(26); for (let i = 0; i < 26; i++) { buf1.writeInt8(i + 97, i); } const buf2 = buf1.subarray(0, 3); console.info(buf2.toString('ascii', 0, buf2.length)); // Output: abc ``` ### swap16 swap16(): FastBuffer Converts this **FastBuffer** object into an array of unsigned 16-bit integers and swaps the byte order in place. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Return value** | Type| Description| | -------- | -------- | | FastBuffer | **FastBuffer** object swapped.| **Error codes** For details about the error codes, see [Utils Error Codes](errorcode-utils.md). | ID| Error Message| | -------- | -------- | | 10200009 | The fastbuffer size must be a multiple of 16-bits. | **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf1 = fastbuffer.from([0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8]); console.info(buf1.toString('hex')); // Output: 0102030405060708 buf1.swap16(); console.info(buf1.toString('hex')); // Output: 0201040306050807 ``` ### swap32 swap32(): FastBuffer Converts this **FastBuffer** object into an array of unsigned 32-bit integers and swaps the byte order in place. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Return value** | Type| Description| | -------- | -------- | | FastBuffer | **FastBuffer** object swapped.| **Error codes** For details about the error codes, see [Utils Error Codes](errorcode-utils.md). | ID| Error Message| | -------- | -------- | | 10200009 | The fastbuffer size must be a multiple of 32-bits. | **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf1 = fastbuffer.from([0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8]); console.info(buf1.toString('hex')); // Output: 0102030405060708 buf1.swap32(); console.info(buf1.toString('hex')); // Output: 0403020108070605 ``` ### swap64 swap64(): FastBuffer Converts this **FastBuffer** object into an array of unsigned 64-bit integers and swaps the byte order in place. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Return value** | Type| Description| | -------- | -------- | | FastBuffer | **FastBuffer** object swapped.| **Error codes** For details about the error codes, see [Utils Error Codes](errorcode-utils.md). | ID| Error Message| | -------- | -------- | | 10200009 | The fastbuffer size must be a multiple of 64-bits. | **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf1 = fastbuffer.from([0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8]); console.info(buf1.toString('hex')); // Output: 0102030405060708 buf1.swap64(); console.info(buf1.toString('hex')); // Output: 0807060504030201 ``` ### toJSON toJSON(): Object Converts this **FastBuffer** object into a JSON object. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Return value** | Type| Description| | -------- | -------- | | Object | JSON object.| **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf1 = fastbuffer.from([0x1, 0x2, 0x3, 0x4, 0x5]); let obj = buf1.toJSON(); console.info(JSON.stringify(obj)); // Output: {"type":"FastBuffer","data":[1,2,3,4,5]} ``` ### toString toString(encoding?: string, start?: number, end?: number): string Converts the data at the specified position in this **FastBuffer** object into a string in the specified encoding format. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | encoding | string | No| Encoding format (valid only when **value** is a string). The default value is **'utf8'**.| | start | number | No| Offset to the start position of the data to convert. The default value is **0**.| | end | number | No| Offset to the end position of the data to convert. The default value is **Buffer.length**.| **Return value** | Type| Description| | -------- | -------- | | string | String. When the value of **start** is greater than or equal to **this.length** or **start** is greater than **end**, an empty string is returned.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md). | ID| Error Message| | -------- | -------- | | 10200068 | The underlying ArrayBuffer is null or detach. | **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf1 = fastbuffer.allocUninitializedFromPool(26); for (let i = 0; i < 26; i++) { buf1.writeInt8(i + 97, i); } console.info(buf1.toString('utf-8')); // Output: abcdefghijklmnopqrstuvwxyz ``` ### write write(str: string, offset?: number, length?: number, encoding?: string): number Writes a string of the specified length to this **FastBuffer** object at the specified position in the given encoding format. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | str | string | Yes| String to write.| | offset | number | No| Number of bytes to skip before starting to write data. The default value is **0**.| | length | number | No| Maximum number of bytes to write. The default value is **this.length - offset**.| | encoding | string | No| Encoding format of the string. The default value is **'utf8'**.| **Return value** | Type| Description| | -------- | -------- | | number | Number of bytes written.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md). | ID| Error Message| | -------- | -------- | | 10200001 | Range error. Possible causes: The value of the parameter is not within the specified range. | | 10200068 | The underlying ArrayBuffer is null or detach. | **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf = fastbuffer.alloc(256); let len = buf.write('\u00bd + \u00bc = \u00be', 0); console.info(`${len} bytes: ${buf.toString('utf-8', 0, len)}`); // Output: 12 bytes: ½ + ¼ = ¾ let buffer1 = fastbuffer.alloc(10); let length = buffer1.write('abcd', 8); console.info("length = " + length); // Output: length = 2 ``` ### writeBigInt64BE writeBigInt64BE(value: bigint, offset?: number): number Writes a 64-bit, big-endian, signed big integer to this **FastBuffer** object at the specified offset. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | value | bigint | Yes| Data to write. Value range: -INT64_MAX <= value <= INT64_MAX| | offset | number | No| Number of bytes to skip before starting to write data. The default value is **0**. Value range: 0 <= offset <= this.length - 8| **Return value** | Type| Description| | -------- | -------- | | number | Offset plus the number of written bytes.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md). | ID| Error Message| | -------- | -------- | | 10200001 | The value of "[param]" is out of range. It must be >= [left range] and <= [right range]. Received value is: [param] | **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf = fastbuffer.allocUninitializedFromPool(8); let result = buf.writeBigInt64BE(BigInt(0x0102030405060708), 0); console.info("result = " + result); // Output: result = 8 ``` ### writeBigInt64LE writeBigInt64LE(value: bigint, offset?: number): number Writes a 64-bit, little-endian, signed big integer to this **FastBuffer** object at the specified offset. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | value | bigint | Yes| Data to write. Value range: -INT64_MAX <= value <= INT64_MAX| | offset | number | No| Number of bytes to skip before starting to write data. The default value is **0**. Value range: 0 <= offset <= this.length - 8| **Return value** | Type| Description| | -------- | -------- | | number | Offset plus the number of written bytes.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md). | ID| Error Message| | -------- | -------- | | 10200001 | The value of "[param]" is out of range. It must be >= [left range] and <= [right range]. Received value is: [param] | **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf = fastbuffer.allocUninitializedFromPool(8); let result = buf.writeBigInt64LE(BigInt(0x0102030405060708), 0); console.info("result = " + result); // Output: result = 8 ``` ### writeBigUInt64BE writeBigUInt64BE(value: bigint, offset?: number): number **Atomic service API**: This API can be used in atomic services since API version 20. Writes a 64-bit, big-endian, unsigned big integer to this **FastBuffer** object at the specified offset. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | value | bigint | Yes| Data to write. Value range: 0 <= value <= UINT64_MAX| | offset | number | No| Number of bytes to skip before starting to write data. The default value is **0**. Value range: 0 <= offset <= this.length - 8| **Return value** | Type| Description| | -------- | -------- | | number | Offset plus the number of written bytes.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md). | ID| Error Message| | -------- | -------- | | 10200001 | The value of "[param]" is out of range. It must be >= [left range] and <= [right range]. Received value is: [param] | **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf = fastbuffer.allocUninitializedFromPool(8); let result = buf.writeBigUInt64BE(BigInt(0xdecafafecacefade), 0); console.info("result = " + result); // Output: result = 8 ``` ### writeBigUInt64LE writeBigUInt64LE(value: bigint, offset?: number): number Writes a 64-bit, little-endian, unsigned big integer to this **FastBuffer** object at the specified offset. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | value | bigint | Yes| Data to write. Value range: 0 <= value <= UINT64_MAX| | offset | number | No| Number of bytes to skip before starting to write data. The default value is **0**. Value range: 0 <= offset <= this.length - 8| **Return value** | Type| Description| | -------- | -------- | | number | Offset plus the number of written bytes.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md). | ID| Error Message| | -------- | -------- | | 10200001 | The value of "[param]" is out of range. It must be >= [left range] and <= [right range]. Received value is: [param] | **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf = fastbuffer.allocUninitializedFromPool(8); let result = buf.writeBigUInt64LE(BigInt(0xdecafafecacefade), 0); console.info("result = " + result); // Output: result = 8 ``` ### writeDoubleBE writeDoubleBE(value: number, offset?: number): number Writes a 64-bit, big-endian, double-precision floating-point number to this **FastBuffer** object at the specified offset. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | value | number | Yes| Data to write. Value range: -DOUBLE_MAX <= value <= DOUBLE_MAX| | offset | number | No| Number of bytes to skip before starting to write data. The default value is **0**. Value range: 0 <= offset <= this.length - 8| **Return value** | Type| Description| | -------- | -------- | | number | Offset plus the number of written bytes.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md). | ID| Error Message| | -------- | -------- | | 10200001 | The value of "offset" is out of range. It must be >= 0 and <= buf.length - 8. Received value is: [offset] | **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf = fastbuffer.allocUninitializedFromPool(8); let result = buf.writeDoubleBE(123.456, 0); console.info("result = " + result); // Output: result = 8 ``` ### writeDoubleLE writeDoubleLE(value: number, offset?: number): number Writes a 64-bit, little-endian, double-precision floating-point number to this **FastBuffer** object at the specified offset. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | value | number | Yes| Data to write. Value range: -DOUBLE_MAX <= value <= DOUBLE_MAX| | offset | number | No| Number of bytes to skip before starting to write data. The default value is **0**. Value range: 0 <= offset <= this.length - 8| **Return value** | Type| Description| | -------- | -------- | | number | Offset plus the number of written bytes.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md). | ID| Error Message| | -------- | -------- | | 10200001 | The value of "offset" is out of range. It must be >= 0 and <= buf.length - 8. Received value is: [offset] | **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf = fastbuffer.allocUninitializedFromPool(8); let result = buf.writeDoubleLE(123.456, 0); console.info("result = " + result); // Output: result = 8 ``` ### writeFloatBE writeFloatBE(value: number, offset?: number): number Writes a 32-bit, big-endian, single-precision floating-point number to this **FastBuffer** object at the specified offset. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | value | number | Yes| Data to write. Value range: -FLOAT_MAX <= value <= FLOAT_MAX| | offset | number | No| Number of bytes to skip before starting to write data. The default value is **0**. Value range: 0 <= offset <= this.length - 4| **Return value** | Type| Description| | -------- | -------- | | number | Offset plus the number of written bytes.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md). | ID| Error Message| | -------- | -------- | | 10200001 | The value of "offset" is out of range. It must be >= 0 and <= buf.length - 4. Received value is: [offset] | **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf = fastbuffer.allocUninitializedFromPool(8); let result = buf.writeFloatBE(0xcafebabe, 0); console.info("result = " + result); // Output: result = 4 ``` ### writeFloatLE writeFloatLE(value: number, offset?: number): number Writes a 32-bit, little-endian, single-precision floating-point number to this **FastBuffer** object at the specified offset. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | value | number | Yes| Data to write. Value range: -FLOAT_MAX <= value <= FLOAT_MAX| | offset | number | No| Number of bytes to skip before starting to write data. The default value is **0**. Value range: 0 <= offset <= this.length - 4| **Return value** | Type| Description| | -------- | -------- | | number | Offset plus the number of written bytes.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md). | ID| Error Message| | -------- | -------- | | 10200001 | The value of "offset" is out of range. It must be >= 0 and <= buf.length - 4. Received value is: [offset] | **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf = fastbuffer.allocUninitializedFromPool(8); let result = buf.writeFloatLE(0xcafebabe, 0); console.info("result = " + result); // Output: result = 4 ``` ### writeInt8 writeInt8(value: number, offset?: number): number Writes an 8-bit signed integer to this **FastBuffer** object at the specified offset. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | value | number | Yes| Data to write. Value range: -INT8_MAX <= value <= INT8_MAX| | offset | number | No| Number of bytes to skip before starting to write data. The default value is **0**. Value range: 0 <= offset <= this.length - 1| **Return value** | Type| Description| | -------- | -------- | | number | Offset plus the number of written bytes.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md). | ID| Error Message| | -------- | -------- | | 10200001 | The value of "[param]" is out of range. It must be >= [left range] and <= [right range]. Received value is: [param] | **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf = fastbuffer.allocUninitializedFromPool(2); let result = buf.writeInt8(2, 0); console.info("result = " + result); // Output: result = 1 let result1 = buf.writeInt8(-2, 1); console.info("result1 = " + result1); // Output: result1 = 2 ``` ### writeInt16BE writeInt16BE(value: number, offset?: number): number Writes a 16-bit, big-endian, signed integer to this **FastBuffer** object at the specified offset. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | value | number | Yes| Data to write. Value range: -INT16_MAX <= value <= INT16_MAX| | offset | number | No| Number of bytes to skip before starting to write data. The default value is **0**. Value range: 0 <= offset <= this.length - 2| **Return value** | Type| Description| | -------- | -------- | | number | Offset plus the number of written bytes.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md). | ID| Error Message| | -------- | -------- | | 10200001 | The value of "[param]" is out of range. It must be >= [left range] and <= [right range]. Received value is: [param] | **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf = fastbuffer.allocUninitializedFromPool(2); let result = buf.writeInt16BE(0x0102, 0); console.info("result = " + result); // Output: result = 2 ``` ### writeInt16LE writeInt16LE(value: number, offset?: number): number Writes a 16-bit, little-endian, signed integer to this **FastBuffer** object at the specified offset. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | value | number | Yes| Data to write. Value range: -INT16_MAX <= value <= INT16_MAX| | offset | number | No| Number of bytes to skip before starting to write data. The default value is **0**. Value range: 0 <= offset <= this.length - 2| **Return value** | Type| Description| | -------- | -------- | | number | Offset plus the number of written bytes.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md). | ID| Error Message| | -------- | -------- | | 10200001 | The value of "[param]" is out of range. It must be >= [left range] and <= [right range]. Received value is: [param] | **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf = fastbuffer.allocUninitializedFromPool(2); let result = buf.writeInt16LE(0x0304, 0); console.info("result = " + result); // Output: result = 2 ``` ### writeInt32BE writeInt32BE(value: number, offset?: number): number Writes a 32-bit, big-endian, signed integer to this **FastBuffer** object at the specified offset. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | value | number | Yes| Data to write. Value range: -INT32_MAX <= value <= INT32_MAX| | offset | number | No| Number of bytes to skip before starting to write data. The default value is **0**. Value range: 0 <= offset <= this.length - 4| **Return value** | Type| Description| | -------- | -------- | | number | Offset plus the number of written bytes.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md). | ID| Error Message| | -------- | -------- | | 10200001 | The value of "[param]" is out of range. It must be >= [left range] and <= [right range]. Received value is: [param] | **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf = fastbuffer.allocUninitializedFromPool(4); let result = buf.writeInt32BE(0x01020304, 0); console.info("result = " + result); // Output: result = 4 ``` ### writeInt32LE writeInt32LE(value: number, offset?: number): number Writes a 32-bit, little-endian, signed integer to this **FastBuffer** object at the specified offset. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | value | number | Yes| Data to write. Value range: -INT32_MAX <= value <= INT32_MAX| | offset | number | No| Number of bytes to skip before starting to write data. The default value is **0**. Value range: 0 <= offset <= this.length - 4| **Return value** | Type| Description| | -------- | -------- | | number | Offset plus the number of written bytes.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md). | ID| Error Message| | -------- | -------- | | 10200001 | The value of "[param]" is out of range. It must be >= [left range] and <= [right range]. Received value is: [param] | **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf = fastbuffer.allocUninitializedFromPool(4); let result = buf.writeInt32LE(0x05060708, 0); console.info("result = " + result); // Output: result = 4 ``` ### writeIntBE writeIntBE(value: number, offset: number, byteLength: number): number Writes a big-endian signed value of the specified length to this **FastBuffer** object at the specified offset. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | value | number | Yes| Data to write. The value range depends on **byteLength**. | | offset | number | Yes| Number of bytes to skip before starting to write data. The default value is **0**. Value range: 0 <= offset <= this.length - byteLength| | byteLength | number | Yes| Number of bytes to write.| **Return value** | Type| Description| | -------- | -------- | | number | Offset plus the number of written bytes.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md). | ID| Error Message| | -------- | -------- | | 10200001 | The value of "[param]" is out of range. It must be >= [left range] and <= [right range]. Received value is: [param] | **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf = fastbuffer.allocUninitializedFromPool(6); let result = buf.writeIntBE(0x1234567890ab, 0, 6); console.info("result = " + result); // Output: result = 6 ``` ### writeIntLE writeIntLE(value: number, offset: number, byteLength: number): number Writes a little-endian signed value of the specified length to this **FastBuffer** object at the specified offset. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | value | number | Yes| Data to write. The value range depends on **byteLength**.| | offset | number | Yes| Number of bytes to skip before starting to write data. The default value is **0**. Value range: 0 <= offset <= this.length - byteLength| | byteLength | number | Yes| Number of bytes to write.| **Return value** | Type| Description| | -------- | -------- | | number | Offset plus the number of written bytes.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md). | ID| Error Message| | -------- | -------- | | 10200001 | The value of "[param]" is out of range. It must be >= [left range] and <= [right range]. Received value is: [param] | **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf = fastbuffer.allocUninitializedFromPool(6); let result = buf.writeIntLE(0x1234567890ab, 0, 6); console.info("result = " + result); // Output: result = 6 ``` ### writeUInt8 writeUInt8(value: number, offset?: number): number Writes an 8-bit unsigned integer to this **FastBuffer** object at the specified offset. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | value | number | Yes| Data to write. Value range: 0 <= value <= UINT8_MAX| | offset | number | No| Number of bytes to skip before starting to write data. The default value is **0**. Value range: 0 <= offset <= this.length - 1| **Return value** | Type| Description| | -------- | -------- | | number | Offset plus the number of written bytes.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md). | ID| Error Message| | -------- | -------- | | 10200001 | The value of "[param]" is out of range. It must be >= [left range] and <= [right range]. Received value is: [param] | **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf = fastbuffer.allocUninitializedFromPool(4); let result = buf.writeUInt8(0x3, 0); console.info("result = " + result); // Output: result = 1 let result1 = buf.writeUInt8(0x4, 1); console.info("result1 = " + result1); // Output: result1 = 2 let result2 = buf.writeUInt8(0x23, 2); console.info("result2 = " + result2); // Output: result2 = 3 let result3 = buf.writeUInt8(0x42, 3); console.info("result3 = " + result3); // Output: result3 = 4 ``` ### writeUInt16BE writeUInt16BE(value: number, offset?: number): number Writes a 16-bit, big-endian, unsigned integer to this **FastBuffer** object at the specified offset. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | value | number | Yes| Data to write. Value range: 0 <= value <= UINT16_MAX| | offset | number | No| Number of bytes to skip before starting to write data. The default value is **0**. Value range: 0 <= offset <= this.length - 2| **Return value** | Type| Description| | -------- | -------- | | number | Offset plus the number of written bytes.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md). | ID| Error Message| | -------- | -------- | | 10200001 | The value of "[param]" is out of range. It must be >= [left range] and <= [right range]. Received value is: [param] | **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf = fastbuffer.allocUninitializedFromPool(4); let result = buf.writeUInt16BE(0xdead, 0); console.info("result = " + result); // Output: result = 2 let result1 = buf.writeUInt16BE(0xbeef, 2); console.info("result1 = " + result1); // Output: result1 = 4 ``` ### writeUInt16LE writeUInt16LE(value: number, offset?: number): number Writes a 16-bit, little-endian, unsigned integer to this **FastBuffer** object at the specified offset. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | value | number | Yes| Data to write. Value range: 0 <= value <= UINT16_MAX| | offset | number | No| Number of bytes to skip before starting to write data. The default value is **0**. Value range: 0 <= offset <= this.length - 2| **Return value** | Type| Description| | -------- | -------- | | number | Offset plus the number of written bytes.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md). | ID| Error Message| | -------- | -------- | | 10200001 | The value of "[param]" is out of range. It must be >= [left range] and <= [right range]. Received value is: [param] | **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf = fastbuffer.allocUninitializedFromPool(4); let result = buf.writeUInt16LE(0xdead, 0); console.info("result = " + result); // Output: result = 2 let result1 = buf.writeUInt16LE(0xbeef, 2); console.info("result1 = " + result1); // Output: result1 = 4 ``` ### writeUInt32BE writeUInt32BE(value: number, offset?: number): number Writes a 32-bit, big-endian, unsigned integer to this **FastBuffer** object at the specified offset. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | value | number | Yes| Data to write. Value range: 0 <= value <= UINT32_MAX| | offset | number | No| Number of bytes to skip before starting to write data. The default value is **0**. Value range: 0 <= offset <= this.length - 4.| **Return value** | Type| Description| | -------- | -------- | | number | Offset plus the number of written bytes.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md). | ID| Error Message| | -------- | -------- | | 10200001 | The value of "[param]" is out of range. It must be >= [left range] and <= [right range]. Received value is: [param] | **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf = fastbuffer.allocUninitializedFromPool(4); let result = buf.writeUInt32BE(0xfeedface, 0); console.info("result = " + result); // Output: result = 4 ``` ### writeUInt32LE writeUInt32LE(value: number, offset?: number): number Writes a 32-bit, little-endian, unsigned integer to this **FastBuffer** object at the specified offset. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | value | number | Yes| Data to write. Value range: 0 <= value <= UINT32_MAX| | offset | number | No| Number of bytes to skip before starting to write data. The default value is **0**. Value range: 0 <= offset <= this.length - 4.| **Return value** | Type| Description| | -------- | -------- | | number | Offset plus the number of written bytes.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md). | ID| Error Message| | -------- | -------- | | 10200001 | The value of "[param]" is out of range. It must be >= [left range] and <= [right range]. Received value is: [param] | **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf = fastbuffer.allocUninitializedFromPool(4); let result = buf.writeUInt32LE(0xfeedface, 0); console.info("result = " + result); // Output: result = 4 ``` ### writeUIntBE writeUIntBE(value: number, offset: number, byteLength: number): number Writes an unsigned big-endian value of the specified length to this **FastBuffer** object at the specified offset. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | value | number | Yes| Data to write. The value range depends on **byteLength**.| | offset | number | Yes| Number of bytes to skip before starting to write data. The default value is **0**. Value range: 0 <= offset <= this.length - byteLength| | byteLength | number | Yes| Number of bytes to write.| **Return value** | Type| Description| | -------- | -------- | | number | Offset plus the number of written bytes.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md). | ID| Error Message| | -------- | -------- | | 10200001 | The value of "[param]" is out of range. It must be >= [left range] and <= [right range]. Received value is: [param] | **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf = fastbuffer.allocUninitializedFromPool(6); let result = buf.writeUIntBE(0x1234567890ab, 0, 6); console.info("result = " + result); // Output: result = 6 ``` ### writeUIntLE writeUIntLE(value: number, offset: number, byteLength: number): number Writes an unsigned little-endian value of the specified length to this **FastBuffer** object at the specified offset. **Atomic service API**: This API can be used in atomic services since API version 20. **System capability**: SystemCapability.Utils.Lang **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | value | number | Yes| Data to write. The value range depends on **byteLength**.| | offset | number | Yes| Number of bytes to skip before starting to write data. The default value is **0**. Value range: 0 <= offset <= this.length - byteLength| | byteLength | number | Yes| Number of bytes to write.| **Return value** | Type| Description| | -------- | -------- | | number | Offset plus the number of written bytes.| **Error codes** For details about the error codes, see [Universal Error Codes](../errorcode-universal.md) and [Utils Error Codes](errorcode-utils.md). | ID| Error Message| | -------- | -------- | | 10200001 | The value of "[param]" is out of range. It must be >= [left range] and <= [right range]. Received value is: [param] | **Example** ```ts import { fastbuffer } from '@kit.ArkTS'; let buf = fastbuffer.allocUninitializedFromPool(6); let result = buf.writeUIntLE(0x1234567890ab, 0, 6); console.info("result = " + result); // Output: result = 6 ```