Class used for reading BCS data chunk by chunk. Meant to be used by some wrapper, which will make sure that data is valid and is matching the desired format.
// data for this example is:// { a: u8, b: u32, c: bool, d: u64 }let reader = new BcsReader("647f1a060001ffffe7890423c78a050102030405");let field1 = reader.read8();let field2 = reader.read32();let field3 = reader.read8() === '1'; // boollet field4 = reader.read64();// ....Reading vectors is another deal in bcs. To read a vector, you first need to readits length using {@link readULEB}. Here's an example: Copy
// data for this example is:// { a: u8, b: u32, c: bool, d: u64 }let reader = new BcsReader("647f1a060001ffffe7890423c78a050102030405");let field1 = reader.read8();let field2 = reader.read32();let field3 = reader.read8() === '1'; // boollet field4 = reader.read64();// ....Reading vectors is another deal in bcs. To read a vector, you first need to readits length using {@link readULEB}. Here's an example:
// data encoded: { field: [1, 2, 3, 4, 5] }let reader = new BcsReader("050102030405");let vec_length = reader.readULEB();let elements = [];for (let i = 0; i < vec_length; i++) { elements.push(reader.read8());}console.log(elements); // [1,2,3,4,5] Copy
// data encoded: { field: [1, 2, 3, 4, 5] }let reader = new BcsReader("050102030405");let vec_length = reader.readULEB();let elements = [];for (let i = 0; i < vec_length; i++) { elements.push(reader.read8());}console.log(elements); // [1,2,3,4,5]
HEX-encoded data (serialized BCS)
Data to use as a buffer.
Read U128 value from the buffer and shift cursor by 16.
Read U16 value from the buffer and shift cursor by 2.
Read U128 value from the buffer and shift cursor by 32.
Read U32 value from the buffer and shift cursor by 4.
Read U64 value from the buffer and shift cursor by 8.
Read U8 value from the buffer and shift cursor by 1.
Read num number of bytes from the buffer and shift cursor by num.
num
Number of bytes to read.
Read ULEB value - an integer of varying size. Used for enum indexes and vector lengths.
The ULEB value.
Read a BCS vector: read a length and then apply function cb X times where X is the length of the vector, defined as ULEB in BCS bytes.
cb
Callback to process elements of vector.
Array of the resulting values, returned by callback.
Shift current cursor position by bytes.
bytes
Number of bytes to
Self for possible chaining.
Class used for reading BCS data chunk by chunk. Meant to be used by some wrapper, which will make sure that data is valid and is matching the desired format.
Example
Example
Param: data
HEX-encoded data (serialized BCS)