196 lines
5.3 KiB
Markdown
196 lines
5.3 KiB
Markdown
-----
|
|
|
|
Documentation: [html](https://docs-beta.ethers.io/)
|
|
|
|
-----
|
|
|
|
Byte Manipulation
|
|
=================
|
|
|
|
Types
|
|
-----
|
|
|
|
### Bytes
|
|
|
|
### BytesLike
|
|
|
|
### DataHexString
|
|
|
|
### HexString
|
|
|
|
### Signature
|
|
|
|
### Raw Signature
|
|
|
|
### SignatureLike
|
|
|
|
Inspection
|
|
----------
|
|
|
|
#### *ethers* . *utils* . **isBytes**( object ) => *boolean*
|
|
|
|
Returns true if and only if *object* is a valid [Bytes](/v5/api/utils/bytes/#Bytes).
|
|
|
|
|
|
#### *ethers* . *utils* . **isBytesLike**( object ) => *boolean*
|
|
|
|
Returns true if and only if *object* is a [Bytes](/v5/api/utils/bytes/#Bytes) or [DataHexString](/v5/api/utils/bytes/#DataHexString).
|
|
|
|
|
|
#### *ethers* . *utils* . **isHexString**( object , [ length ] ) => *boolean*
|
|
|
|
Returns true if and only if *object* is a valid hex string. If *length* is specified and *object* is not a valid [DataHexString](/v5/api/utils/bytes/#DataHexString) of *length* bytes, an InvalidArgument error is thrown.
|
|
|
|
|
|
Converting between Arrays and Hexstrings
|
|
----------------------------------------
|
|
|
|
#### *ethers* . *utils* . **arrayify**( DataHexStringOrArrayish [ , options ] ) => *Uint8Array*
|
|
|
|
Converts *DataHexStringOrArrayish* to a Uint8Array.
|
|
|
|
|
|
#### *ethers* . *utils* . **hexlify**( hexstringOrArrayish ) => *string< [DataHexString](/v5/api/utils/bytes/#DataHexString) >*
|
|
|
|
Converts *hexstringOrArrayish* to a [DataHexString](/v5/api/utils/bytes/#DataHexString).
|
|
|
|
|
|
#### *ethers* . *utils* . **hexValue**( aBigNumberish ) => *string< [HexString](/v5/api/utils/bytes/#HexString) >*
|
|
|
|
Converts *aBigNumberish* to a [HexString](/v5/api/utils/bytes/#HexString), with no *unnecessary* leading zeros.
|
|
|
|
|
|
```javascript
|
|
// Convert a hexstring to a Uint8Array
|
|
arrayify("0x1234")
|
|
// Uint8Array [ 18, 52 ]
|
|
|
|
// Convert an Array to a hexstring
|
|
hexlify([1, 2, 3, 4])
|
|
// '0x01020304'
|
|
|
|
// Convert an Object to a hexstring
|
|
hexlify({ length: 2, "0": 1, "1": 2 })
|
|
// '0x0102'
|
|
|
|
// Convert an Array to a hexstring
|
|
hexlify([ 1 ])
|
|
// '0x01'
|
|
|
|
// Convert a number to a stripped hex value
|
|
hexValue(1)
|
|
// '0x1'
|
|
|
|
// Convert an Array to a stripped hex value
|
|
hexValue([ 1, 2 ])
|
|
// '0x102'
|
|
```
|
|
|
|
Array Manipulation
|
|
------------------
|
|
|
|
#### *ethers* . *utils* . **concat**( arrayOfBytesLike ) => *Uint8Array*
|
|
|
|
Concatenates all the [BytesLike](/v5/api/utils/bytes/#BytesLike) in *arrayOfBytesLike* into a single Uint8Array.
|
|
|
|
|
|
#### *ethers* . *utils* . **stripZeros**( aBytesLike ) => *Uint8Array*
|
|
|
|
Returns a Uint8Array with all leading `0` bytes of *aBtyesLike* removed.
|
|
|
|
|
|
#### *ethers* . *utils* . **zeroPad**( aBytesLike , length ) => *Uint8Array*
|
|
|
|
Retutns a Uint8Array of the data in *aBytesLike* with `0` bytes prepended to *length* bytes long.
|
|
|
|
If *aBytesLike* is already longer than *length* bytes long, an InvalidArgument error will be thrown.
|
|
|
|
|
|
Hexstring Manipulation
|
|
----------------------
|
|
|
|
#### *ethers* . *utils* . **hexConcat**( arrayOfBytesLike ) => *string< [DataHexString](/v5/api/utils/bytes/#DataHexString) >*
|
|
|
|
Concatenates all the [BytesLike](/v5/api/utils/bytes/#BytesLike) in *arrayOfBytesLike* into a single [DataHexString](/v5/api/utils/bytes/#DataHexString)
|
|
|
|
|
|
#### *ethers* . *utils* . **hexDataLength**( aBytesLike ) => *string< [DataHexString](/v5/api/utils/bytes/#DataHexString) >*
|
|
|
|
Returns the length (in bytes) of *aBytesLike*.
|
|
|
|
|
|
#### *ethers* . *utils* . **hexDataSlice**( aBytesLike , offset [ , endOffset ] ) => *string< [DataHexString](/v5/api/utils/bytes/#DataHexString) >*
|
|
|
|
Returns a [DataHexString](/v5/api/utils/bytes/#DataHexString) representation of a slice of *aBytesLike*, from *offset* (in bytes) to *endOffset* (in bytes). If *endOffset* is omitted, the length of *aBytesLike* is used.
|
|
|
|
|
|
#### *ethers* . *utils* . **hexStripZeros**( aBytesLike ) => *string< [HexString](/v5/api/utils/bytes/#HexString) >*
|
|
|
|
Returns a [HexString](/v5/api/utils/bytes/#HexString) representation of *aBytesLike* with all leading zeros removed.
|
|
|
|
|
|
#### *ethers* . *utils* . **hexZeroPad**( aBytesLike , length ) => *string< [DataHexString](/v5/api/utils/bytes/#DataHexString) >*
|
|
|
|
Returns a [DataHexString](/v5/api/utils/bytes/#DataHexString) representation of *aBytesLike* padded to *length* bytes.
|
|
|
|
If *aBytesLike* is already longer than *length* bytes long, an InvalidArgument error will be thrown.
|
|
|
|
|
|
Signature Conversion
|
|
--------------------
|
|
|
|
#### *ethers* . *utils* . **joinSignature**( aSignatureLike ) => *string< [RawSignature](/v5/api/utils/bytes/#signature-raw) >*
|
|
|
|
Return the raw-format of *aSignaturelike*, which is 65 bytes (130 nibbles) long, concatenating the **r**, **s** and (normalized) **v** of a Signature.
|
|
|
|
|
|
#### *ethers* . *utils* . **splitSignature**( aSignatureLikeOrBytesLike ) => *[Signature](/v5/api/utils/bytes/#Signature)*
|
|
|
|
Return the full expanded-format of *aSignaturelike* or a raw-format [DataHexString](/v5/api/utils/bytes/#DataHexString). Any missing properties will be computed.
|
|
|
|
|
|
Random Bytes
|
|
------------
|
|
|
|
#### *ethers* . *utils* . **randomBytes**( length ) => *Uint8Array*
|
|
|
|
Return a new Uint8Array of *length* random bytes.
|
|
|
|
|
|
#### *ethers* . *utils* . **shuffled**( array ) => *Array< any >*
|
|
|
|
Return a copy of *array* shuffled using [Fisher-Yates Shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).
|
|
|
|
|
|
```javascript
|
|
utils.randomBytes(8)
|
|
// Uint8Array [ 131, 252, 210, 50, 128, 120, 18, 68 ]
|
|
|
|
const data = [ 1, 2, 3, 4, 5, 6, 7 ];
|
|
|
|
// Returns a new Array
|
|
utils.shuffled(data);
|
|
// [
|
|
// 7,
|
|
// 6,
|
|
// 4,
|
|
// 2,
|
|
// 3,
|
|
// 1,
|
|
// 5
|
|
// ]
|
|
|
|
// The Original is unscathed...
|
|
data
|
|
// [
|
|
// 1,
|
|
// 2,
|
|
// 3,
|
|
// 4,
|
|
// 5,
|
|
// 6,
|
|
// 7
|
|
// ]
|
|
```
|
|
|