bin
Binary data; an immutable sequence of bytes.
Fields
len
Returns the byte length of the binary data.
Type: int
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: bool
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: bin
ends_with suffix
Tests whether the binary data ends with the given suffix.
Parameters:
| Name | Type | Description |
|---|---|---|
suffix |
bin |
the suffix bytes |
Returns: bool
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: bin
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: bin
trim chars?
Removes bytes (or specified characters) from both ends.
Parameters:
| Name | Type | Description |
|---|---|---|
chars |
bin |
bytes to trim (defaults to whitespace bytes) |
Returns: bin
trim_start chars?
Removes bytes (or specified characters) from the start.
Parameters:
| Name | Type | Description |
|---|---|---|
chars |
bin |
bytes to trim |
Returns: bin
trim_end chars?
Removes bytes (or specified characters) from the end.
Parameters:
| Name | Type | Description |
|---|---|---|
chars |
bin |
bytes to trim |
Returns: bin
contains needle
Tests whether the binary data contains the given bytes.
Parameters:
| Name | Type | Description |
|---|---|---|
needle |
bin |
the bytes to find |
Returns: bool
assert (b"hello".contains b"ell")
assert (b"hello".contains b"lo"))
assert (!(b"hello".contains b"world"))
assert (b"hello".contains b""))
sub start end?
Returns a slice from start to end (exclusive). If end is omitted,
returns from start to the end. Negative indexes count from the end.
Parameters:
| Name | Type | Description |
|---|---|---|
start |
int |
starting byte index |
end |
int |
ending byte index (exclusive) |
Returns: bin
assert_eq (b"hello".sub 2) b"llo"
assert_eq (b"hello".sub 1 4) b"ell"
assert_eq (b"hello".sub -2) b"lo"
assert_eq (b"hello".sub 1 -1) b"ell"
unpack
Unpacks binary data into an array of byte values (integers from 0-255).
hex
Returns the binary data as a lowercase hexadecimal string.
Returns: str
Constructors
bin value
Converts a value to binary data. If the value is already binary, returns it directly. Otherwise, converts via string representation.
Parameters:
| Name | Type | Description |
|---|---|---|
value |
value to convert |
Returns: bin
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: bin
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) |