# ByteArray class

A wrapper for byte arrays similar to Java's byte[] with utility methods.

This class provides a convenient interface for working with byte arrays, wrapping Dart's `List<int>` with Java-like methods and additional utilities.

Example usage:

    ByteArray bytes = ByteArray.fromString("Hello");
    ByteArray copy = bytes.copy();
    bytes.set(0, 72); // Change 'H' to 'H' (same value)

    print(bytes.toString()); // "Hello"
    print(bytes.length); // 5

## Constructors

ByteArray.new(int size)
  Creates a ByteArray with the specified size, filled with zeros.
  factory
ByteArray.filled(int size, int fillValue)
  Creates a ByteArray filled with the specified value.
  factory
ByteArray.fromList(List<int> bytes)
  Creates a ByteArray from an existing list of bytes.
  factory
ByteArray.fromString(String str)
  Creates a ByteArray from a string.
  factory
ByteArray.fromUint8List(Uint8List data)
  Creates a ByteArray from a Uint8List.
  factory

## Properties

hashCode → int
  Returns the hash code for this byte array.
  no setter override
isEmpty → bool
  Returns true if this array is empty.
  no setter
isNotEmpty → bool
  Returns true if this array is not empty.
  no setter
length → int
  Returns the length of this byte array.
  no setter
runtimeType → Type
  A representation of the runtime type of the object.
  no setter inherited

## Methods

concat(ByteArray other) → ByteArray
  Concatenates this byte array with another.
contains(int value) → bool
  Returns true if this array contains the specified byte.
copy([int? start, int? end]) → ByteArray
  Creates a copy of this byte array.
copyTo(int srcPos, ByteArray dest, int destPos, int length) → void
  Copies a portion of this array to another array.
fill(int value, [int? start, int? end]) → void
  Fills this array with the specified value.
get(int index) → int
  Gets the byte at the specified index.
indexOf(int value, [int start = 0]) → int
  Returns the index of the first occurrence of the specified byte.
lastIndexOf(int value, [int? start]) → int
  Returns the index of the last occurrence of the specified byte.
noSuchMethod(Invocation invocation) → dynamic
  Invoked when a nonexistent method or property is accessed.
  inherited
reverse() → void
  Reverses the order of bytes in this array.
set(int index, int value) → void
  Sets the byte at the specified index.
sort() → void
  Sorts the bytes in this array.
subArray(int start, [int? end]) → ByteArray
  Returns a subarray of this byte array.
toHexString([String separator = '']) → String
  Returns a hexadecimal string representation of this byte array.
toList() → List<int>
  Converts this byte array to a `List<int>`.
toString() → String
  Returns a string representation of this byte array.
  override
toStringAsChars() → String
  Converts this byte array to a string.
toUint8List() → Uint8List
  Converts this byte array to a Uint8List.

## Operators

operator +(ByteArray other) → ByteArray
  Concatenation operator
operator ==(Object other) → bool
  Returns true if this byte array equals the specified object.
  override
operator [](int index) → int
  Operator overloads
operator []=(int index, int value) → void

## Static Methods

compare(ByteArray a, ByteArray b) → int
  Static utility methods Compares two byte arrays lexicographically.
equals(ByteArray a, ByteArray b) → bool
  Returns true if two byte arrays are equal.
fromHexString(String hexString) → ByteArray
  Creates a ByteArray from a hexadecimal string.