toBytes method

Uint8List toBytes()

Encodes this CID into its binary representation as a Uint8List.

  • For CIDv0, the binary representation is simply the multihash bytes.
  • For CIDv1, it is <cid-version-varint><multicodec-cid-codec-varint><multihash-bytes>.

This method is useful for serialization or when needing the raw bytes for specific multibase encodings.

Example:

final cid = CID.fromString('bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi');
final bytes = cid.toBytes();
print(bytes); // Uint8List [...]

Implementation

Uint8List toBytes() {
  if (version == V0) {
    // CIDv0 is just the multihash.
    // The multihash itself is already in its binary form.
    return multihash;
  } else {
    // CIDv1: <version-varint><codec-varint><multihash-bytes>
    final versionBytes = encodeVarint(version);
    final codecBytes = encodeVarint(codec);

    final builder = BytesBuilder(copy: false);
    builder.add(versionBytes);
    builder.add(codecBytes);
    builder.add(multihash);
    return builder.toBytes();
  }
}