Yjs varint encoding

来自WHY42
Riguz留言 | 贡献2024年10月13日 (日) 13:47的版本

[1]

Yjs uses varint to encode content, which is similar in protobuf. Yjs encodes unsigned integer within range of 0-2^53-1, which is the max number supported by javascript[2].

123456=0b111|1000100|1000000
->(1)1000000|(1)1000100|(0)____111
-> 0xc0     | 0xc4     | 0x07

The first bit indicates that whether there's a continuous byte, if it's 0, then the number is finished.