`bytes` is a mutable byte buffer.
Use it when Expr code needs binary data, image raw pixels, base64 data, packed numeric values, or serial/crypto payloads. Use `array()` for normal Expr values.
Creates an empty byte buffer.
| Item | Description |
|---|---|
| Syntax | `bytes()` |
| Arguments | none |
| Returns | bytes object |
Example:
data = bytes(); data.size(); // 0
Creates a byte buffer with `size` bytes initialized to zero.
| Argument | Type | Description |
|---|---|---|
| `size` | number | Initial byte count. Negative values are treated as `0`. |
Returns: bytes object.
Example:
data = bytes(4); data.to_hex(); // '00000000'
`bytes` has no object-specific properties.
Use methods such as `get(index)`, `set(index, value)`, `size()`, `to_hex()`, and typed numeric methods to work with the byte buffer.
Returns a display string for the object.
| Item | Description |
|---|---|
| Syntax | `value.to_string()` |
| Arguments | none |
| Returns | string |
Example:
text = value.to_string();
Returns a new bytes object with a separate copy of the byte buffer.
| Item | Description |
|---|---|
| Syntax | `bytes.clone()` |
| Arguments | none |
| Returns | bytes object |
Example:
data = bytes(); data.add_string('ABC'); copy = data.clone();
Returns the number of bytes in the buffer.
| Item | Description |
|---|---|
| Syntax | `bytes.size()` |
| Arguments | none |
| Returns | number |
Example:
bytes(3).size(); // 3
Alias for `size()`.
| Item | Description |
|---|---|
| Syntax | `bytes.count()` |
| Arguments | none |
| Returns | number |
Example:
data = bytes(2); data.count(); // 2
Returns true when the buffer has no bytes.
| Item | Description |
|---|---|
| Syntax | `bytes.empty()` |
| Arguments | none |
| Returns | boolean-style number |
Example:
data = bytes(); data.empty(); // true
Removes all bytes from the buffer.
| Item | Description |
|---|---|
| Syntax | `bytes.clear()` |
| Arguments | none |
| Returns | boolean-style number |
Example:
data = bytes(4); data.clear(); data.size(); // 0
Resizes the buffer. New bytes are initialized to zero.
| Argument | Type | Description |
|---|---|---|
| `size` | number | New byte count. Negative values are treated as `0`. |
Returns: new byte count.
Example:
data = bytes(); data.resize(3); data.to_hex(); // '000000'
Returns one byte as a number.
| Argument | Type | Description |
|---|---|---|
| `index` | number | Byte index. Negative indexes are treated as `0`. |
Returns: byte value, or `none()` when index is outside the buffer.
Example:
data = bytes(); data.add(65); data.get(0); // 65
Returns a new `bytes` object containing up to `count` bytes from `index`.
| Argument | Type | Description |
|---|---|---|
| `index` | number | Start byte index. Negative indexes are treated as `0`. |
| `count` | number | Maximum number of bytes to copy. |
Returns: bytes object.
Example:
data = bytes(); data.add_string('ABCDEF'); part = data.get(1, 3); part.get_string(0); // 'BCD'
Writes one byte, or writes all bytes from another `bytes` object.
| Argument | Type | Description |
|---|---|---|
| `index` | number | Byte index. Negative indexes are treated as `0`. |
| `value` | number or bytes | Byte value, or bytes object to copy. |
Returns: boolean-style number.
Writing past the end grows the buffer and fills gaps with zero bytes.
Example:
data = bytes(); data.set(2, 255); data.to_hex(); // '0000ff'
Appends one byte, or appends all bytes from another `bytes` object.
| Argument | Type | Description |
|---|---|---|
| `value` | number or bytes | Byte value, or bytes object to append. |
Returns: boolean-style number.
Example:
data = bytes(); data.add(65); data.add(66); data.get_string(0); // 'AB'
Inserts one zero byte before `index`.
| Argument | Type | Description |
|---|---|---|
| `index` | number | Insert position. Negative indexes are treated as `0`. Values beyond the end insert at the end. |
Returns: boolean-style number.
Example:
data = bytes(); data.add_string('AC'); data.insert(1); data.set(1, 66); data.get_string(0); // 'ABC'
Inserts `count` zero bytes before `index`.
| Argument | Type | Description |
|---|---|---|
| `index` | number | Insert position. Negative indexes are treated as `0`. Values beyond the end insert at the end. |
| `count` | number | Number of zero bytes to insert. |
Returns: boolean-style number.
Example:
data = bytes(); data.add_string('AD'); data.insert(1, 2); data.to_hex(); // '41000044'
Removes one byte at `index`.
| Argument | Type | Description |
|---|---|---|
| `index` | number | Byte index. Negative indexes are treated as `0`. |
Returns: boolean-style number.
Example:
data = bytes(); data.add_string('ABC'); data.erase(1); data.get_string(0); // 'AC'
Removes up to `count` bytes starting at `index`.
| Argument | Type | Description |
|---|---|---|
| `index` | number | Start byte index. Negative indexes are treated as `0`. |
| `count` | number | Maximum number of bytes to remove. |
Returns: boolean-style number.
Example:
data = bytes(); data.add_string('ABCD'); data.erase(1, 2); data.get_string(0); // 'AD'
Returns text from `index` to the end of the buffer.
| Argument | Type | Description |
|---|---|---|
| `index` | number | Start byte index. |
Returns: string. If `index` is outside the buffer, returns an empty string.
Example:
data = bytes(); data.add_string('ABC'); data.get_string(1); // 'BC'
Returns up to `count` bytes as text.
| Argument | Type | Description |
|---|---|---|
| `index` | number | Start byte index. |
| `count` | number | Maximum number of bytes to read. |
Returns: string.
Example:
data = bytes(); data.add_string('ABCDE'); data.get_string(1, 3); // 'BCD'
Writes string bytes at `index`.
| Argument | Type | Description |
|---|---|---|
| `index` | number | Start byte index. |
| `text` | string | Text to write as bytes. |
Returns: boolean-style number.
Example:
data = bytes(); data.set_string(2, 'HI'); data.to_hex(); // '00004849'
Appends string bytes.
| Argument | Type | Description |
|---|---|---|
| `text` | string | Text to append as bytes. |
Returns: boolean-style number.
Example:
data = bytes(); data.add_string('ABC'); data.to_hex(); // '414243'
Reads a signed 8-bit integer.
| Argument | Type | Description |
|---|---|---|
| `index` | number | Start byte index. |
Returns: number, or `none()` when there are not enough bytes.
Example:
data = bytes(); data.add_s8(-1); data.get_s8(0); // -1
Reads an unsigned 8-bit integer.
| Argument | Type | Description |
|---|---|---|
| `index` | number | Start byte index. |
Returns: number, or `none()` when there are not enough bytes.
Example:
data = bytes(); data.add_u8(255); data.get_u8(0); // 255
Reads a signed 16-bit integer.
| Argument | Type | Description |
|---|---|---|
| `index` | number | Start byte index. |
| `littleEndian` | boolean | Optional byte order flag. Defaults to `true`. |
Returns: number, or `none()` when there are not enough bytes.
Example:
data = bytes(); data.add_s16(-2, true); data.get_s16(0, true); // -2
Reads an unsigned 16-bit integer.
| Argument | Type | Description |
|---|---|---|
| `index` | number | Start byte index. |
| `littleEndian` | boolean | Optional byte order flag. Defaults to `true`. |
Returns: number, or `none()` when there are not enough bytes.
Example:
data = bytes(); data.add_u16(4660, true); data.get_u16(0, true); // 4660
Reads a signed 32-bit integer.
| Argument | Type | Description |
|---|---|---|
| `index` | number | Start byte index. |
| `littleEndian` | boolean | Optional byte order flag. Defaults to `true`. |
Returns: number, or `none()` when there are not enough bytes.
Example:
data = bytes(); data.add_s32(-123456, true); data.get_s32(0, true); // -123456
Alias for `get_s32(index[, littleEndian])`.
Example:
data = bytes(); data.add_s3(-123456, true); data.get_s3(0, true); // -123456
Reads an unsigned 32-bit integer.
| Argument | Type | Description |
|---|---|---|
| `index` | number | Start byte index. |
| `littleEndian` | boolean | Optional byte order flag. Defaults to `true`. |
Returns: number, or `none()` when there are not enough bytes.
Example:
data = bytes(); data.add_u32(2864434397, true); data.get_u32(0, true); // 2864434397
Reads a 32-bit floating-point value.
| Argument | Type | Description |
|---|---|---|
| `index` | number | Start byte index. |
| `littleEndian` | boolean | Optional byte order flag. Defaults to `true`. |
Returns: number, or `none()` when there are not enough bytes.
Example:
data = bytes(); data.add_float(1.5, true); data.get_float(0, true); // 1.5
Reads a 64-bit floating-point value.
| Argument | Type | Description |
|---|---|---|
| `index` | number | Start byte index. |
| `littleEndian` | boolean | Optional byte order flag. Defaults to `true`. |
Returns: number, or `none()` when there are not enough bytes.
Example:
data = bytes(); data.add_double(3.25, true); data.get_double(0, true); // 3.25
Writes a signed 8-bit integer.
| Argument | Type | Description |
|---|---|---|
| `index` | number | Start byte index. |
| `value` | number | Value to write. |
Returns: boolean-style number.
Example:
data = bytes(); data.set_s8(0, -1); data.get_s8(0); // -1
Writes an unsigned 8-bit integer.
| Argument | Type | Description |
|---|---|---|
| `index` | number | Start byte index. |
| `value` | number | Value to write. |
Returns: boolean-style number.
Example:
data = bytes(); data.set_u8(0, 255); data.get_u8(0); // 255
Writes a signed 16-bit integer.
| Argument | Type | Description |
|---|---|---|
| `index` | number | Start byte index. |
| `value` | number | Value to write. |
| `littleEndian` | boolean | Optional byte order flag. Defaults to `true`. |
Returns: boolean-style number.
Example:
data = bytes(); data.set_s16(0, -2, true); data.get_s16(0, true); // -2
Writes an unsigned 16-bit integer.
| Argument | Type | Description |
|---|---|---|
| `index` | number | Start byte index. |
| `value` | number | Value to write. |
| `littleEndian` | boolean | Optional byte order flag. Defaults to `true`. |
Returns: boolean-style number.
Example:
data = bytes(); data.set_u16(0, 4660, true); data.to_hex(); // '3412'
Writes a signed 32-bit integer.
| Argument | Type | Description |
|---|---|---|
| `index` | number | Start byte index. |
| `value` | number | Value to write. |
| `littleEndian` | boolean | Optional byte order flag. Defaults to `true`. |
Returns: boolean-style number.
Example:
data = bytes(); data.set_s32(0, -123456, true); data.get_s32(0, true); // -123456
Alias for `set_s32(index, value[, littleEndian])`.
Example:
data = bytes(); data.set_s3(0, -123456, true); data.get_s3(0, true); // -123456
Writes an unsigned 32-bit integer.
| Argument | Type | Description |
|---|---|---|
| `index` | number | Start byte index. |
| `value` | number | Value to write. |
| `littleEndian` | boolean | Optional byte order flag. Defaults to `true`. |
Returns: boolean-style number.
Example:
data = bytes(); data.set_u32(0, 2864434397, true); data.get_u32(0, true); // 2864434397
Writes a 32-bit floating-point value.
| Argument | Type | Description |
|---|---|---|
| `index` | number | Start byte index. |
| `value` | number | Value to write. |
| `littleEndian` | boolean | Optional byte order flag. Defaults to `true`. |
Returns: boolean-style number.
Example:
data = bytes(); data.set_float(0, 1.5, true); data.get_float(0, true); // 1.5
Writes a 64-bit floating-point value.
| Argument | Type | Description |
|---|---|---|
| `index` | number | Start byte index. |
| `value` | number | Value to write. |
| `littleEndian` | boolean | Optional byte order flag. Defaults to `true`. |
Returns: boolean-style number.
Example:
data = bytes(); data.set_double(0, 3.25, true); data.get_double(0, true); // 3.25
Appends a signed 8-bit integer.
| Argument | Type | Description |
|---|---|---|
| `value` | number | Value to append. |
Returns: boolean-style number.
Example:
data = bytes(); data.add_s8(-1); data.get_s8(0); // -1
Appends an unsigned 8-bit integer.
| Argument | Type | Description |
|---|---|---|
| `value` | number | Value to append. |
Returns: boolean-style number.
Example:
data = bytes(); data.add_u8(255); data.get_u8(0); // 255
Appends a signed 16-bit integer.
| Argument | Type | Description |
|---|---|---|
| `value` | number | Value to append. |
| `littleEndian` | boolean | Optional byte order flag. Defaults to `true`. |
Returns: boolean-style number.
Example:
data = bytes(); data.add_s16(-2, true); data.get_s16(0, true); // -2
Appends an unsigned 16-bit integer.
| Argument | Type | Description |
|---|---|---|
| `value` | number | Value to append. |
| `littleEndian` | boolean | Optional byte order flag. Defaults to `true`. |
Returns: boolean-style number.
Example:
data = bytes(); data.add_u16(4660, true); data.to_hex(); // '3412'
Appends a signed 32-bit integer.
| Argument | Type | Description |
|---|---|---|
| `value` | number | Value to append. |
| `littleEndian` | boolean | Optional byte order flag. Defaults to `true`. |
Returns: boolean-style number.
Example:
data = bytes(); data.add_s32(-123456, true); data.get_s32(0, true); // -123456
Alias for `add_s32(value[, littleEndian])`.
Example:
data = bytes(); data.add_s3(-123456, true); data.get_s3(0, true); // -123456
Appends an unsigned 32-bit integer.
| Argument | Type | Description |
|---|---|---|
| `value` | number | Value to append. |
| `littleEndian` | boolean | Optional byte order flag. Defaults to `true`. |
Returns: boolean-style number.
Example:
data = bytes(); data.add_u32(2864434397, true); data.get_u32(0, true); // 2864434397
Appends a 32-bit floating-point value.
| Argument | Type | Description |
|---|---|---|
| `value` | number | Value to append. |
| `littleEndian` | boolean | Optional byte order flag. Defaults to `true`. |
Returns: boolean-style number.
Example:
data = bytes(); data.add_float(1.5, true); data.get_float(0, true); // 1.5
Appends a 64-bit floating-point value.
| Argument | Type | Description |
|---|---|---|
| `value` | number | Value to append. |
| `littleEndian` | boolean | Optional byte order flag. Defaults to `true`. |
Returns: boolean-style number.
Example:
data = bytes(); data.add_double(3.25, true); data.get_double(0, true); // 3.25
Returns the buffer as lowercase hexadecimal text.
| Item | Description |
|---|---|
| Syntax | `bytes.to_hex()` |
| Arguments | none |
| Returns | string |
Example:
data = bytes(); data.add_string('A'); data.to_hex(); // '41'
Returns the buffer encoded as base64 text.
| Item | Description |
|---|---|
| Syntax | `bytes.to_base64()` |
| Arguments | none |
| Returns | string |
Example:
data = bytes(); data.add_string('ABC'); data.to_base64(); // 'QUJD'
Replaces the buffer with decoded base64 data.
| Argument | Type | Description |
|---|---|---|
| `text` | string | Base64 text to decode. |
Returns: decoded byte count.
Example:
data = bytes(); data.from_base64('QUJD'); data.get_string(0); // 'ABC'
Searches for a byte, string, or another `bytes` object.
| Argument | Type | Description |
|---|---|---|
| `value` | number, string, or bytes | Value to find. |
Returns: first byte index, `-1` when not found, or `none()` for unsupported argument types.
Example:
data = bytes(); data.add_string('ABCDEF'); data.find('CD'); // 2 data.find(70); // 5
Previous: map
Next: File Format I/O