Bin
Binary data; an immutable sequence of bytes.
Fields
len
Returns the byte length of the binary data.
Type
Instance Methods
starts_with prefix
Tests whether the binary data starts with the given prefix.
Parameters
| Name | Type | Description |
|---|---|---|
prefix |
Bin |
the prefix bytes |
Returns
without_prefix prefix
Returns the binary data with the prefix removed if it matches, otherwise returns the original data.
Parameters
| Name | Type | Description |
|---|---|---|
prefix |
Bin |
the prefix to remove |
Returns
ends_with suffix
Tests whether the binary data ends with the given suffix.
Parameters
| Name | Type | Description |
|---|---|---|
suffix |
Bin |
the suffix bytes |
Returns
without_suffix suffix
Returns the binary data with the suffix removed if it matches, otherwise returns the original data.
Parameters
| Name | Type | Description |
|---|---|---|
suffix |
Bin |
the suffix to remove |
Returns
split delimiter [limit: int]
Splits the binary data by the delimiter, returning an iterator that yields segments in left-to-right order.
The optional limit works identically to
str.split: positive splits from the
left, negative splits from the right (but still yields left-to-right).
Parameters
| Name | Type | Description |
|---|---|---|
delimiter |
Bin |
the delimiter bytes |
limit |
Int |
max splits; negative means split from right |
Returns
iterator of Bin
assert_eq [...b"a,b,c".split b","] [b"a", b"b", b"c"]
assert_eq [...b"a,b,c".split b"," limit: 1] [b"a", b"b,c"]
let base ext = b"archive.tar.gz".split b"." limit: -1
assert_eq $base b"archive.tar"
assert_eq $ext b"gz"
rsplit delimiter [limit: int]
Like split, but yields segments in right-to-left order. Mirrors
str.rsplit.
Parameters
| Name | Type | Description |
|---|---|---|
delimiter |
Bin |
the delimiter bytes |
limit |
Int |
max splits; negative means split from left |
Returns
iterator of Bin
assert_eq [...b"a,b,c".rsplit b","] [b"c", b"b", b"a"]
assert_eq [...b"a,b,c".rsplit b"," limit: 1] [b"c", b"a,b"]
join iter?
Joins values from an input source using this binary data as a separator.
Parameters
| Name | Type | Description |
|---|---|---|
input |
iterable to join (uses default input if omitted) |
Returns
trim chars?
Removes bytes (or specified characters) from both ends.
Parameters
| Name | Type | Description |
|---|---|---|
chars |
Bin |
bytes to trim (defaults to whitespace bytes) |
Returns
trim_start chars?
Removes bytes (or specified characters) from the start.
Parameters
| Name | Type | Description |
|---|---|---|
chars |
Bin |
bytes to trim |
Returns
trim_end chars?
Removes bytes (or specified characters) from the end.
Parameters
| Name | Type | Description |
|---|---|---|
chars |
Bin |
bytes to trim |
Returns
contains needle
Tests whether the binary data contains the given bytes.
Parameters
| Name | Type | Description |
|---|---|---|
needle |
Bin |
the bytes to find |
Returns
assert (b"hello".contains b"ell")
assert (b"hello".contains b"lo")
assert (!(b"hello".contains b"world"))
assert (b"hello".contains b"")
unpack
Unpacks binary data into an array of byte values (integers from 0-255).
Returns
hex
Returns the binary data as a lowercase hexadecimal string.
Returns
Operations
Indexing
Binary data accepts Range values for slicing by byte position:
assert_eq (b"abcd"[1..3]) b"bc"
assert_eq (b"abcd"[..2]) b"ab"
assert_eq (b"abcd"[2..]) b"cd"
assert_eq (b"abcd"[..]) b"abcd"
assert_eq (b"foobar"[-3..]) b"bar"
assert_eq (b"abcd"[Range 0 4 2]) b"ac"
assert_eq (b"abcd"[Range nil nil -1]) b"dcba"
This returns a new binary value. Slice boundaries must be in bounds. Omitted
start means 0, omitted end means the binary length, and negative
endpoints count from the end. Negative steps reverse the slice.
Constructors
Bin value
Accepts binary data or copies the UTF-8 bytes of a string.
Parameters
| Name | Type | Description |
|---|---|---|
value |
Bin|Str |
source bytes |
Class Methods
pack array
Packs an array of integers (0-255) into binary data.
Parameters
| Name | Type | Description |
|---|---|---|
array |
Array |
array of integers (0-255) |
Returns
unpack value
Unpacks any value that can be converted to binary into an array of byte values.
Parameters
| Name | Type | Description |
|---|---|---|
value |
value to unpack (converted to bin) |