本書での記法
本章では、本書におけるデータ型や値の記法を導入する。 これらは本書での解説のための記法であり、 FBX データ内部にそのような記法が出現することを意味しない。
型の表現
本書では原則的に、データ型の表現としてプログラミング言語 Rust の型の記法を用いる。 具体的には、以下のようなものを用いる。
表記 | 内容 | 補足・詳細 |
---|---|---|
bool | 真偽値 | 値は true と false 。内部表現が 0 と 1 とは限らない。 |
u8 | 符号なし8ビット整数 | |
u16 | 符号なし16ビット整数 | |
u32 | 符号なし32ビット整数 | |
u64 | 符号なし64ビット整数 | |
i16 | 符号付き16ビット整数 | 2の補数表現 |
i32 | 符号付き32ビット整数 | 2の補数表現 |
i64 | 符号付き64ビット整数 | 2の補数表現 |
f32 | 32ビット浮動小数点数 | IEEE 754 |
f64 | 64ビット浮動小数点数 | IEEE 754 |
[T; n] | 要素数 n の、型 T の配列 | |
String | 長さ無指定の文字列データ | UTF-8 |
Vec<T> | 要素数無指定の、型 T の配列 | |
Vec<u8> | 長さ無指定のバイナリデータ | 符号なし8ビット整数の配列と見做せる |
値の表現
データ中に現れる数値などを記述するとき、 42
や 0xff
や 3.14
のように表現する。
もし桁が大きな数値であれば、読みやすさのためアンダースコア _
を挿入することがある。
たとえば 0xcobebeef
は 0xcobe_beef
、 1000000
は 1_000_000
などのように表現することもある。
バイナリデータを記述するときは、 [c0 be be ef]
のように [
と ]
で囲って1バイトずつ16進数を空白区切りで並べて記述する。
1バイトは16進数2桁で表現する。
データは数値やその他の型として読んだ後の値を表現するかバイト列として1バイトずつ記すため、エンディアンを気にする必要はない。
文字列は foobar
のように表現する。
これらが数値やバイナリデータと混同するおそれのある文字列値であるときは、文字列である旨明示する。
明示がないときは、数値やその他の型の値として優先して解釈するものとする。
特殊な記号や非印字文字などは \x00
や foo\x00bar
のように \x
に続けて16進数2桁で表現する。