# ByteArray

the `ByteArray` is an object that inherits from `Array`. There are 3 features added to it.

* [.from()](#the-from-method)
* [.toString()](#tostring)
* [.set()](#set)

## the .from method

`ByteArray.from(args)` returns a new ByteArray.

### args

args can be zero or more paramters of type `Number` or `String` or an `Array` of these type including `Arrays`.

`Strings` are interpreted as numbers written in hexadecimal notation. Every `String` passed, that contains chars other than `0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f` is an Error

if a `Number` is larger than 255 it will be split into 8bit Bytes. so `ByteArray.from(256) returns [1,0]`

### examples

`ByteArray.from(1)` returns [1]

`ByteArray.from(1,2,3)` returns [1,2,3]

`ByteArray.from(1,"2",[3])` returns [1,2,3]

`ByteArray.from("010203")` returns [1,2,3]

`ByteArray.from("01",[2,"03"])` returns [1,2,3]

`ByteArray.from("01",[2,["03",4],5])` returns [1,2,3,4,5]

`ByteArray.from(0x010203)` returns [1,2,3]

`ByteArray.from(0x010203,[4,"05"],6,0x0708)` returns [1,2,3,4,5,6,7,8]

## .toString()

returns a string representing the Array in hexadecimal notation.

### examples

`ByteArray.from(1,2,3).toString()` returns "010203"

`ByteArray.from(0xff0203,[4,"05"],6,0x0708)` returns "ff02030405060708"

## .set

arr.set(data, offset) inserts data into the Array at an offset.

### data

data passed here will be turned into a ByteArray. see [ByteArray.from()](#the-from-method)

The resulting Array will be spliced into the array at the offset passed here as well. overwriting exactly the number of items passed.

if the length of the passed array plus the offset is larger than the originl Array, it will be expanded.

offest defaults to 0 and can be omitted

### examples

`ByteArray.from(1,2,3,4,5,6).set("aabb",2).toString()` returns "0102aabb0506"

`ByteArray.from(1,2,3,4,5,6).set(0xaabb,2).toString()` returns "0102aabb0506"

`ByteArray.from(1,2,3,4,5,6).set([0xaa,0xbb],2).toString()` returns "0102aabb0506"

`ByteArray.from(1,2,3,4).set("aabbccdd",2).toString()` returns "0102aabbbbccdd"
