bytes
A sequence of bytes.
This is conceptually similar to an array of integers between 0
and 255
, but represented much more efficiently. You can iterate over it
using a for loop.
You can convert
- a string or an array of integers to bytes with the
bytes
constructor - bytes to a string with the
str
constructor, with UTF-8 encoding - bytes to an array of integers with the
array
constructor
When reading data from a file, you can decide whether to load it as a string or as raw bytes.
#bytes((123, 160, 22, 0)) \
#bytes("Hello 😃")
#let data = read(
"rhino.png",
encoding: none,
)
// Magic bytes.
#array(data.slice(0, 4)) \
#str(data.slice(1, 4))
Constructor
If a type has a constructor, you can call it like a function to create a new value of the type.
Converts a value to bytes.
- Strings are encoded in UTF-8.
- Arrays of integers between
0
and255
are converted directly. The dedicated byte representation is much more efficient than the array representation and thus typically used for large byte buffers (e.g. image data).
#bytes("Hello 😃") \
#bytes((123, 160, 22, 0))
value
The value that should be converted to bytes.
Definitions
Functions and types and can have associated definitions. These are accessed by specifying the function or type, followed by a period, and then the definition's name.
len
The length in bytes.
at
Returns the byte at the specified index. Returns the default value if the index is out of bounds or fails with an error if no default value was specified.
index
The index at which to retrieve the byte.
default
A default value to return if the index is out of bounds.
slice
Extracts a subslice of the bytes. Fails with an error if the start or end index is out of bounds.
start
The start index (inclusive).
end
The end index (exclusive). If omitted, the whole slice until the end is extracted.
Default:none
count
The number of items to extract. This is equivalent to passing
start + count
as the end
position. Mutually exclusive with
end
.