fromU64 static method
Implementation
static CanisterId fromU64(int val) {
// It is important to use big endian here to ensure that the generated
// `PrincipalId`s still maintain ordering.
var data = List.generate(MAX_LENGTH_IN_BYTES, (index) => 0);
// Specify explicitly the length, so as to assert at compile time that a u64
// takes exactly 8 bytes
// let val: [u8; 8] = val.to_be_bytes();
var valU8a = val.toU8a(bitLength: 64);
// for-loops in const fn are not supported
data[0] = valU8a[0];
data[1] = valU8a[1];
data[2] = valU8a[2];
data[3] = valU8a[3];
data[4] = valU8a[4];
data[5] = valU8a[5];
data[6] = valU8a[6];
data[7] = valU8a[7];
// Even though not defined in the interface spec, add another 0x1 to the array
// to create a sub category that could be used in future.
data[8] = 0x01;
var blobLength = 8 /* the u64 */ + 1 /* the last 0x01 */;
data[blobLength] = TYPE_OPAQUE;
return CanisterId(
Principal.create(blobLength + 1, Uint8List.fromList(data)));
// Self(PrincipalId::new_opaque_from_array(data, blob_length))
}