use bytes

Byte array operations and endianness conversion. Provides functions for reading and writing multi-byte integers in big-endian and little-endian byte order.

Functions

fn compare

Compare two byte buffers.

Signature: (a:ptr a_off:i64 b:ptr b_off:i64 count:i64 -- result:i64)

Parameter Type Description
a ptr First buffer
a_off i64 First buffer offset
b ptr Second buffer
b_off i64 Second buffer offset
count i64 Number of bytes to compare
Output Type Description
result i64 0 if equal, negative if ab

Example:

buf1 0 buf2 0 10 bytes::compare  // result

fn copy

Copy bytes from one buffer to another.

Signature: (dst:ptr dst_off:i64 src:ptr src_off:i64 count:i64 -- )

Parameter Type Description
dst ptr Destination buffer
dst_off i64 Destination offset
src ptr Source buffer
src_off i64 Source offset
count i64 Number of bytes to copy

Example:

dst 0 src 0 10 bytes::copy

fn fill

Fill a buffer with a byte value.

Signature: (value:i64 buf:ptr offset:i64 count:i64 -- )

Parameter Type Description
value i64 Byte value to fill with
buf ptr Buffer to fill
offset i64 Starting offset
count i64 Number of bytes to fill

Example:

0 buf 0 10 bytes::fill

fn read_u16_be

Read a 16-bit unsigned integer from memory in big-endian order.

Signature: (buf:ptr offset:i64 -- value:i64)

Parameter Type Description
buf ptr Buffer to read from
offset i64 Byte offset in buffer
Output Type Description
value i64 16-bit value

Example:

buf 0 bytes::read_u16_be  // val

fn read_u16_le

Read a 16-bit unsigned integer from memory in little-endian order.

Signature: (buf:ptr offset:i64 -- value:i64)

Parameter Type Description
buf ptr Buffer to read from
offset i64 Byte offset in buffer
Output Type Description
value i64 16-bit value

Example:

buf 0 bytes::read_u16_le  // val

fn read_u32_be

Read a 32-bit unsigned integer from memory in big-endian order.

Signature: (buf:ptr offset:i64 -- value:i64)

Parameter Type Description
buf ptr Buffer to read from
offset i64 Byte offset in buffer
Output Type Description
value i64 32-bit value

Example:

buf 0 bytes::read_u32_be  // val

fn read_u32_le

Read a 32-bit unsigned integer from memory in little-endian order.

Signature: (buf:ptr offset:i64 -- value:i64)

Parameter Type Description
buf ptr Buffer to read from
offset i64 Byte offset in buffer
Output Type Description
value i64 32-bit value

Example:

buf 0 bytes::read_u32_le  // val

fn read_u64_be

Read a 64-bit unsigned integer from memory in big-endian order.

Signature: (buf:ptr offset:i64 -- value:i64)

Parameter Type Description
buf ptr Buffer to read from
offset i64 Byte offset in buffer
Output Type Description
value i64 64-bit value

Example:

buf 0 bytes::read_u64_be  // val

fn read_u64_le

Read a 64-bit unsigned integer from memory in little-endian order.

Signature: (buf:ptr offset:i64 -- value:i64)

Parameter Type Description
buf ptr Buffer to read from
offset i64 Byte offset in buffer
Output Type Description
value i64 64-bit value

Example:

buf 0 bytes::read_u64_le  // val

fn swap16

Swap byte order of a 16-bit value.

Signature: (value:i64 -- result:i64)

Parameter Type Description
value i64 16-bit value
Output Type Description
result i64 Byte-swapped value

Example:

0x1234 bytes::swap16  // result  // 0x3412

fn swap32

Swap byte order of a 32-bit value.

Signature: (value:i64 -- result:i64)

Parameter Type Description
value i64 32-bit value
Output Type Description
result i64 Byte-swapped value

Example:

0x12345678 bytes::swap32  // result  // 0x78563412

fn swap64

Swap byte order of a 64-bit value.

Signature: (value:i64 -- result:i64)

Parameter Type Description
value i64 64-bit value
Output Type Description
result i64 Byte-swapped value

Example:

0x0102030405060708 bytes::swap64  // result  // 0x0807060504030201

fn write_u16_be

Write a 16-bit unsigned integer to memory in big-endian order.

Signature: (buf:ptr offset:i64 value:i64 -- )

Parameter Type Description
buf ptr Buffer to write to
offset i64 Byte offset in buffer
value i64 16-bit value to write

Example:

buf 0 0x1234 bytes::write_u16_be

fn write_u16_le

Write a 16-bit unsigned integer to memory in little-endian order.

Signature: (buf:ptr offset:i64 value:i64 -- )

Parameter Type Description
buf ptr Buffer to write to
offset i64 Byte offset in buffer
value i64 16-bit value to write

Example:

buf 0 0x1234 bytes::write_u16_le

fn write_u32_be

Write a 32-bit unsigned integer to memory in big-endian order.

Signature: (buf:ptr offset:i64 value:i64 -- )

Parameter Type Description
buf ptr Buffer to write to
offset i64 Byte offset in buffer
value i64 32-bit value to write

Example:

buf 0 0x12345678 bytes::write_u32_be

fn write_u32_le

Write a 32-bit unsigned integer to memory in little-endian order.

Signature: (buf:ptr offset:i64 value:i64 -- )

Parameter Type Description
buf ptr Buffer to write to
offset i64 Byte offset in buffer
value i64 32-bit value to write

Example:

buf 0 0x12345678 bytes::write_u32_le

fn write_u64_be

Write a 64-bit unsigned integer to memory in big-endian order.

Signature: (buf:ptr offset:i64 value:i64 -- )

Parameter Type Description
buf ptr Buffer to write to
offset i64 Byte offset in buffer
value i64 64-bit value to write

Example:

buf 0 0x123456789ABCDEF0 bytes::write_u64_be

fn write_u64_le

Write a 64-bit unsigned integer to memory in little-endian order.

Signature: (buf:ptr offset:i64 value:i64 -- )

Parameter Type Description
buf ptr Buffer to write to
offset i64 Byte offset in buffer
value i64 64-bit value to write

Example:

buf 0 0x123456789ABCDEF0 bytes::write_u64_le