ByteVector

sealed abstract class ByteVector extends BitwiseOperations[ByteVector, Long] with Ordered[ByteVector] with Serializable
An immutable vector of bytes, backed by a balanced binary tree of
chunks. Most operations are logarithmic in the depth of this tree,
including ++, :+, +:, update, and insert. Where possible,
operations return lazy views rather than copying any underlying bytes.
Use copy to copy all underlying bytes to a fresh, array-backed ByteVector.
Unless otherwise noted, operations follow the same naming as the scala
standard library collections, though this class does not extend any of the
standard scala collections. Use toIndexedSeq, toSeq, or toIterable
to obtain a regular scala.collection type.
Companion
object
trait Serializable
trait Ordered[ByteVector]
trait Comparable[ByteVector]
class Object
trait Matchable
class Any

Document{}

def size: Long
Returns the number of bytes in this vector.
final def intSize: Option[Int]
Returns the number of bytes in this vector, or None if the size does not
fit into an Int.
final def length: Long
Alias for size.
final def isEmpty: Boolean
Returns true if this vector has no bytes.
final def nonEmpty: Boolean
Returns true if this vector has a non-zero number of bytes.
def get(index: Long): Byte
Gets the byte at the specified index.
Throws
IndexOutOfBoundsException
IndexOutOfBoundsException
final def apply(index: Long): Byte
Alias for get.
Throws
IndexOutOfBoundsException
IndexOutOfBoundsException
final def lift(index: Long): Option[Byte]
Returns the byte at the specified index, or None if the index is out of range.
final def update(idx: Long, b: Byte): ByteVector
Returns a vector with the byte at the specified index replaced with the specified byte.
final def insert(idx: Long, b: Byte): ByteVector
Returns a vector with the specified byte inserted at the specified index.
final def splice(idx: Long, b: ByteVector): ByteVector
Returns a vector with the specified byte vector inserted at the specified index.
final def patch(idx: Long, b: ByteVector): ByteVector
Returns a vector with the specified byte vector replacing bytes [idx, idx + b.size].
def ++(other: ByteVector): ByteVector
Returns a new byte vector representing this vector's contents followed by the specified vector's contents.
final def +:(byte: Byte): ByteVector
Returns a new vector with the specified byte prepended.
def :+(byte: Byte): ByteVector
Returns a new vector with the specified byte appended.
def drop(n: Long): ByteVector
Returns a vector of all bytes in this vector except the first n bytes.
The resulting vector's size is 0 max (size - n).
final def dropRight(n: Long): ByteVector
Returns a vector of all bytes in this vector except the last n bytes.
The resulting vector's size is 0 max (size - n).
final def dropWhile(f: Byte => Boolean): ByteVector
Drops the longest prefix of this vector such that every byte of the prefix satisfies the specific predicate.
def take(n: Long): ByteVector
Returns a vector of the first n bytes of this vector.
The resulting vector's size is n min size.
Note: if an n-byte vector is required, use the acquire method instead.
See also
acquire
final def takeRight(n: Long): ByteVector
Returns a vector of the last n bytes of this vector.
The resulting vector's size is n min size.
final def takeWhile(f: Byte => Boolean): ByteVector
Returns the longest prefix of this vector such that every byte satisfies the specific predicate.
final def splitAt(n: Long): (ByteVector, ByteVector)
Returns a pair of vectors that is equal to (take(n), drop(n)).
final def slice(from: Long, until: Long): ByteVector
Returns a vector made up of the bytes starting at index from up to index until.
def acquire(n: Long): Either[String, ByteVector]
Returns a vector whose contents are the results of taking the first n bytes of this vector.
If this vector does not contain at least n bytes, an error message is returned.
See also
take
final def consume[A](n: Long)(decode: ByteVector => Either[String, A]): Either[String, (ByteVector, A)]
Consumes the first n bytes of this vector and decodes them with the specified function,
resulting in a vector of the remaining bytes and the decoded value. If this vector
does not have n bytes or an error occurs while decoding, an error is returned instead.
final def foldLeft[A](z: A)(f: (A, Byte) => A): A
Applies a binary operator to a start value and all elements of this vector, going left to right.
Value Params
f
operator to apply
z
starting value
final def foldRight[A](z: A)(f: (Byte, A) => A): A
Applies a binary operator to a start value and all elements of this vector, going right to left.
Value Params
f
operator to apply
z
starting value
final def foldLeftBB[A](z: A)(f: (A, ByteBuffer) => A): A
Applies a binary operator to a start value and all segments(views) of this ByteVector expressed as read-only ByteBuffer, going left to right.
Value Params
f
operator to apply
z
Starting value
final def foldRightBB[A](z: A)(f: (ByteBuffer, A) => A): A
Applies a binary operator to a start value and all segments(views) of this ByteVector expressed as read-only ByteBuffer, going right ot left.
Value Params
f
operator to apply
z
Starting value
final def foreach(f: Byte => Unit): Unit
Applies the specified function to each element of this vector.
final def startsWith(b: ByteVector): Boolean
Returns true if this byte vector starts with the specified vector.
final def endsWith(b: ByteVector): Boolean
Returns true if this byte vector ends with the specified vector.
final def indexOfSlice(slice: ByteVector): Long
Finds the first index of the specified byte pattern in this vector.
Returns
index of slice or -1 if not found
final def indexOfSlice(slice: ByteVector, from: Long): Long
Finds the first index after from of the specified byte pattern in this vector.
Returns
index of slice or -1 if not found
final def containsSlice(slice: ByteVector): Boolean
Determines if the specified slice is in this vector.
final def headOption: Option[Byte]
Returns the first byte of this vector or None if vector is emtpy.
final def tail: ByteVector
Returns a vector of all bytes in this vector except the first byte.
final def init: ByteVector
Returns a vector of all bytes in this vector except the last byte.
final def last: Byte
Returns the last byte in this vector or throws if vector is empty.
final def lastOption: Option[Byte]
Returns the last byte in this vector or returns None if vector is empty.
final def padTo(n: Long): ByteVector
Alias for padRight.
Throws
IllegalArgumentException
IllegalArgumentException
final def padRight(n: Long): ByteVector
Returns an n-byte vector whose contents are this vector's contents followed by 0 or more zero bytes.
Throws
IllegalArgumentException
IllegalArgumentException
final def padLeft(n: Long): ByteVector
Returns an n-bytes vector whose contents are 0 or more zero bytes followed by this vector's contents.
Throws
IllegalArgumentException
IllegalArgumentException
final def map(f: Byte => Byte): ByteVector
Returns a vector where each byte is the result of applying the specified function to the corresponding byte in this vector.
This method returns a view and hence, is O(1). Call compact to generate a new strict vector.
final def mapI(f: Byte => Int): ByteVector
Returns a vector where each byte is the result of applying the specified function to the corresponding byte in this vector.
Only the least significant byte is used (the three most significant bytes are ignored).
This method returns a view and hence, is O(1). Call compact to generate a new strict vector.
final def reverse: ByteVector
Returns a vector with the bytes of this vector in reverse order.
This method returns a view and hence, is O(1). Call compact to generate a new strict vector.
final def compact: ByteVector
Returns a vector with the same contents but represented as a single tree node internally.
This may involve copying data, but has the advantage that lookups index directly into a single
node rather than traversing a logarithmic number of nodes in this tree.
Calling this method on an already compacted vector is a no-op.
final def partialCompact(chunkSize: Long): ByteVector
Invokes compact on any subtrees whose size is <= chunkSize.
final def copy: ByteVector
Returns a vector with the same contents as this vector but with a single compacted node made up
by evaluating all internal nodes and concatenating their values.
final def toArray: Array[Byte]
Converts the contents of this vector to a byte array.
final def copyToArray(xs: Array[Byte], start: Int): Unit
Copies the contents of this vector to array xs, beginning at index start.
final def copyToArray(xs: Array[Byte], start: Int, offset: Long, size: Int): Unit
Copies size bytes of this vector, starting at index offset, to array xs, beginning at index start.
final def copyToBuffer(buffer: ByteBuffer): Int
Copies as many bytes as possible to the given ByteBuffer, starting from its
current position. This method will not overflow the buffer.
Value Params
buffer
a ByteBuffer to copy bytes to
Returns
the number of bytes actually copied
final def copyToStream(s: OutputStream): Unit
Copies the contents of this vector to OutputStream s.
final def toIndexedSeq: IndexedSeq[Byte]
Converts the contents of this vector to an IndexedSeq.
final def toSeq: Seq[Byte]
Converts the contents of this vector to a Seq.
final def toIterable: Iterable[Byte]
Converts the contents of this vector to an Iterable.
Converts the contents of this vector to a bit vector of size * 8 bits.
final def bits: BitVector
Alias for toBitVector.
final def buffer: ByteVector
Allocate (unobservable) mutable scratch space at the end of this
ByteVector, which will be used to support fast :+ and ++
of small vectors. A default chunk size is used.
Note that :+, ++, and drop on the result of a call to buffer
are guaranteed to return another buffered ByteVector.
final def bufferBy(chunkSize: Int): ByteVector
Allocate (unobservable) mutable scratch space at the end of this
ByteVector, with chunks of the given size, which will be used to
support fast :+ and ++ of small vectors.
Note that :+, ++, and drop on the result of a call to buffer
are guaranteed to return another buffered ByteVector, with the
same size scratch space.
Collapse any buffered chunks at the end of this ByteVector,
resulting in an unbuffered ByteVector.
final def toByteBuffer: ByteBuffer
Represents the contents of this vector as a read-only java.nio.ByteBuffer.
The returned buffer is read-only with limit set to the minimum number of bytes needed to
represent the contents of this vector, position set to zero, and remaining set to the limit.
final def toBin: String
Converts the contents of this byte vector to a binary string of size * 8 digits.
final def toBin(alphabet: BinaryAlphabet): String
Converts the contents of this byte vector to a binary string of size * 8 digits.
final def toHex: String
Converts the contents of this byte vector to a hexadecimal string of size * 2 nibbles.
final def toHex(alphabet: HexAlphabet): String
Converts the contents of this byte vector to a hexadecimal string of size * 2 nibbles.
final def toBase16: String
Helper alias for toHex:String*
final def toBase16(alphabet: HexAlphabet): String
Helper alias for toHex
final def toBase32: String
Converts the contents of this vector to a base 32 string.
final def toBase32(alphabet: Base32Alphabet): String
Converts the contents of this vector to a base 32 string using the specified alphabet.
final def toBase58: String
Converts the contents of this vector to a base 58 string.
final def toBase58(alphabet: Alphabet): String
Converts the contents of this vector to a base 58 string using the specified alphabet.
final def toBase64: String
Converts the contents of this vector to a base 64 string.
final def toBase64(alphabet: Base64Alphabet): String
Converts the contents of this vector to a base 64 string using the specified alphabet.
final def toBase64NoPad: String
Converts the contents of this vector to a base 64 string without padding.
final def toBase64Url: String
Converts the contents of this vector to a base 64 url string with padding.
final def toBase64UrlNoPad: String
Converts the contents of this vector to a base 64 url string without padding.
final def toByte(signed: Boolean): Byte
Converts the contents of this vector to a byte.
Value Params
signed
whether sign extension should be performed
Throws
IllegalArgumentException
IllegalArgumentException
final def toShort(signed: Boolean, ordering: ByteOrdering): Short
Converts the contents of this vector to a short.
Value Params
ordering
order bytes should be processed in
signed
whether sign extension should be performed
Throws
IllegalArgumentException
IllegalArgumentException
final def toInt(signed: Boolean, ordering: ByteOrdering): Int
Converts the contents of this vector to an int.
Value Params
ordering
order bytes should be processed in
signed
whether sign extension should be performed
Throws
IllegalArgumentException
IllegalArgumentException
final def toLong(signed: Boolean, ordering: ByteOrdering): Long
Converts the contents of this vector to an int.
Value Params
ordering
order bytes should be processed in
signed
whether sign extension should be performed
Throws
IllegalArgumentException
IllegalArgumentException
final def toUUID: UUID
Converts the contents of this byte vector to a UUID.
Throws
IllegalArgumentException
IllegalArgumentException
final def decodeString(charset: Charset): Either[CharacterCodingException, String]
Decodes this vector as a string using the implicitly available charset.
final def decodeUtf8: Either[CharacterCodingException, String]
Decodes this vector as a string using the UTF-8 charset.
final def decodeAscii: Either[CharacterCodingException, String]
Decodes this vector as a string using the US-ASCII charset.
final def zipWith(other: ByteVector)(f: (Byte, Byte) => Byte): ByteVector
Returns a new vector where each byte is the result of evaluating the specified function
against the bytes of this vector and the specified vector at the corresponding index.
The resulting vector has size this.size min other.size.
This method returns a view and hence, is O(1). Call compact to generate a new strict vector.
final def zipWith2(other: ByteVector, other2: ByteVector)(f: (Byte, Byte, Byte) => Byte): ByteVector
See zipWith
This method returns a view and hence, is O(1). Call compact to generate a new strict vector.
final def zipWith3(other: ByteVector, other2: ByteVector, other3: ByteVector)(f: (Byte, Byte, Byte, Byte) => Byte): ByteVector
See zipWith
This method returns a view and hence, is O(1). Call compact to generate a new strict vector.
final def zipWithI(other: ByteVector)(op: (Byte, Byte) => Int): ByteVector
Returns a new vector where each byte is the result of evaluating the specified function
against the bytes of this vector and the specified vector at the corresponding index.
The resulting vector has size this.size min other.size.
Only the least significant byte is used (the three most significant bytes are ignored).
This method returns a view and hence, is O(1). Call compact to generate a new strict vector.
final def zipWithI2(other: ByteVector, other2: ByteVector)(op: (Byte, Byte, Byte) => Int): ByteVector
See zipWithI
This method returns a view and hence, is O(1). Call compact to generate a new strict vector.
final def zipWithI3(other: ByteVector, other2: ByteVector, other3: ByteVector)(op: (Byte, Byte, Byte, Byte) => Int): ByteVector
See zipWithI
This method returns a view and hence, is O(1). Call compact to generate a new strict vector.
final def deflate(level: Int, strategy: Int, nowrap: Boolean, chunkSize: Int): ByteVector
Compresses this vector using ZLIB.
Value Params
chunkSize
buffer size, in bytes, to use when compressing
level
compression level, 0-9, with 0 disabling compression and 9 being highest level of compression -- see java.util.zip.Deflater for details
nowrap
if true, ZLIB header and checksum will not be used
strategy
compression strategy -- see java.util.zip.Deflater for details
final def inflate(chunkSize: Int, nowrap: Boolean): Either[DataFormatException, ByteVector]
Decompresses this vector using ZLIB.
Value Params
chunkSize
buffer size, in bytes, to use when compressing
nowrap
if true, will assume no ZLIB header and checksum
final def digest(algorithm: String): ByteVector
Computes a digest of this byte vector.
Value Params
algorithm
digest algorithm to use
final def digest(digest: MessageDigest): ByteVector
Computes a digest of this byte vector.
Value Params
digest
digest to use
final def encrypt(ci: Cipher, key: Key, aparams: Option[AlgorithmParameters])(sr: SecureRandom): Either[GeneralSecurityException, ByteVector]
Encrypts this byte vector using the specified cipher and key.
Value Params
aparams
optional algorithm paramaters used for encryption (e.g., initialization vector)
ci
cipher to use for encryption
key
key to encrypt with
sr
secure random
final def decrypt(ci: Cipher, key: Key, aparams: Option[AlgorithmParameters])(sr: SecureRandom): Either[GeneralSecurityException, ByteVector]
Decrypts this byte vector using the specified cipher and key.
Value Params
aparams
optional algorithm paramaters used for decryption (e.g., initialization vector)
ci
cipher to use for decryption
key
key to decrypt with
sr
secure random
lazy override val hashCode: Int
Calculates the hash code of this vector. The result is cached.
final def ===(other: ByteVector): Boolean
Returns true if the specified ByteVector has the same contents as this vector.
override def equals(other: Any): Boolean
Returns true if the specified value is a ByteVector with the same contents as this vector.
See also
Definition Classes
Any
override def toString: String
Display the size and bytes of this ByteVector.
For bit vectors beyond a certain size, only a hash of the
contents are shown.
Definition Classes
Any
def implies(other: Repr): Repr
Returns a bitwise implication of this value with the specified value.
The resulting value's size is the minimum of this value's size and the specified value's size.
Inhertied from
BitwiseOperations
final def unary_~: Repr
Returns a bitwise complement of this value.
Inhertied from
BitwiseOperations
def nand(other: Repr): Repr
Returns a bitwise NAND of this value with the specified value.
The resulting value's size is the minimum of this value's size and the specified value's size.
Inhertied from
BitwiseOperations
def nor(other: Repr): Repr
Returns a bitwise NOR of this value with the specified value.
The resulting value's size is the minimum of this value's size and the specified value's size.
Inhertied from
BitwiseOperations
final def |(other: Repr): Repr
Returns a bitwise OR of this value with the specified value.
The resulting value's size is the minimum of this value's size and the specified value's size.
Inhertied from
BitwiseOperations
final def >>>(n: Idx): Repr
Returns a value of the same size with each bit shifted to the right n bits where the n left-most bits are low.
Inhertied from
BitwiseOperations
def iff(other: Repr): Repr
Returns a bitwise if-and-only-if of this value with the specified value.
The resulting value's size is the minimum of this value's size and the specified value's size.
Inhertied from
BitwiseOperations
final def ^(other: Repr): Repr
Returns a bitwise XOR of this value with the specified value.
The resulting value's size is the minimum of this value's size and the specified value's size.
Inhertied from
BitwiseOperations
final def &(other: Repr): Repr
Returns a bitwise AND of this value with the specified value.
The resulting value's size is the minimum of this value's size and the specified value's size.
Inhertied from
BitwiseOperations
final def <<(n: Idx): Repr
Returns a value of the same size with each bit shifted to the left n bits.
Inhertied from
BitwiseOperations
final def >>(n: Idx): Repr
Returns a value of the same size with each bit shifted to the right n bits where the n left-most bits are sign extended.
Inhertied from
BitwiseOperations

Value members

Methods

final def shiftLeft(n: Long): ByteVector
final def shiftRight(n: Long, signExtension: Boolean): ByteVector
final def rotateLeft(n: Long): ByteVector
final def rotateRight(n: Long): ByteVector
final def not: ByteVector
final def or(other: ByteVector): ByteVector
final def and(other: ByteVector): ByteVector
final def xor(other: ByteVector): ByteVector
override def compare(that: ByteVector): Int
Definition Classes
Ordered

Inherited methods

def compareTo(that: A): Int
Inhertied from
Ordered
def <=(that: A): Boolean
Inhertied from
Ordered
def >(that: A): Boolean
Inhertied from
Ordered
def <(that: A): Boolean
Inhertied from
Ordered
def >=(that: A): Boolean
Inhertied from
Ordered