L@ id&6X K"Y^ҚTy"a"*z0uN(x`X@ųRpiҵɸ,[<8$3AHfTi~\4 iӶY}dbodyy バイナリデータのフォーマットを新たに作る際、数に何ビット使うか悩みますよね。
そこで、可変長バイナリフォーマット、Varuint!(参考、Variable-length quantity、LEB128)

「Varuint」
可変(variable)、符号なし(unsigned)、整数(int)なので、var u int。下記のように使います。
import { Varuint } from "https://code4fukui.github.io/Varuint/Varuint.js"; const bin = Varuint.encode(300); console.log(bin); // Uint8Array(2) [172, 2] const n = Varuint.decode(bin); console.log(n); // 300 const len = Varuint.length(n); console.log(len); // 2
0-127であれば1byte、128-16,383であれば2byte、16,384-2,097,151であれば3byteで表現できます。
BigIntに対応しています。
const len = Varuint.length(100000000000000000000n); console.log(len); // 10
1垓(=10の20乗)は、10byteで表せる! ddates2026-01-11T23:55:00bid6cimgxKhttps://img.sabae.cc/data/20260112/82e8fce1-cac2-4fb5-a809-54a6d144fa34.jpgdtagsc#jsetitlex4可変長正数エンコーディング、Varuint.jscurlxhttps://fukuno.jig.jp/4918