- U8 = 符号なし8ビットデータ
- U16 = 符号なし16ビットデータ、ネットワークバイトオーダー (ビッグエンディアン)
- U32 = 符号なし32ビットデータ、ネットワークバイトオーダー (ビッグエンディアン)
- DOUBLE = IEEE754 8バイト浮動小数点、ネットワークバイトオーダー (ビッグエンディアン)
- KB = キロバイト
- GB = ギガバイト
(省略)
UTF-8 = U16 *(UTF8-char)
(省略)
UTF-8-long = U32 *(UTF8-char)
UTF-8-empty = U16
Amf0には16の型マーカーがある。型マーカーは長さ1バイトで、データの種類を示す。それに従ってデコードを行う。
marker = U8
下のリストにマーカーとして使えるものを記す (16進数で表す):
- number-marker = 0x00
- boolean-marker = 0x01
- string-marker = 0x02
- object-marker = 0x03
- movieclip-marker = 0x04 ; 予約済み、未サポート
- null-marker = 0x05
- undefined-marker = 0x06
- reference-marker = 0x07
- ecma-array-marker = 0x08
- object-end-marker = 0x09
- strict-array-marker = 0x0A
- date-marker = 0x0B
- long-string-marker = 0x0C
- unsupported-marker = 0x0D
- recordset-marker = 0x0E ; 予約済み、未サポート
- xml-document-marker = 0x0F
- typed-object-marker = 0x10
注意: Amf3の概要にてFlash Player 9における、特別なマーカーがAmf0に加えられている。それはAmf3シリアライズに切り替えるマーカーに相当する。これはNetConnectionでAmf0で始めたものをAmf3に切り替えるリクエストを行うことを許す。Amf3はAmf0より効率的にエンコードできるという利点がある。
avmplus-object-marker = 0x11
(省略)
Amf 0のNumber型はActionScriptのNumberを符号化するのに使う。Number型マーカーに続いて、IEEE754 8バイト浮動小数点がネットワークバイトオーダーで配置する (符号ビットは先頭)。
number-type = number-marker DOUBLE
Amf 0のBoolean型はprimitive ActionScript 1.0や2.0のBooleanあるいはActionScript 3.0のBooleanを符号化するのに使う。ActionScript 1.0や2.0のnon-primitive Booleanではシリアライズしない。Boolean型マーカーに続いて、符号なし8ビット整数でtrueの場合は非0 (通常は1)、falseの場合は0を配置する。
boolean-type = boolean-marker U8 ; 0はfalse、非0はtrue
Amfではすべての文字列はUTF-8で符号化する。しかしながら、バイト長ヘッダーのフォーマットは異なる。Amf 0 String型は標準的なバイト超ヘッダーを使う (例えばU16)。UTF-8で符号化された65,535バイトを超える長い文字列のためにAmf 0 Long String型も使うことができる。
string-type = string-marker UTF-8
Amf 0 Object型は匿名ActionScriptオブジェクトを符号化するのに使う。登録されていないあるtyped objectは匿名ActionScriptオブジェクトとして扱う。もしオブジェクトグラフに同じオブジェクトインスタンスが現れたなら、Amf 0の参照を使うべきである。
周期的な参照でシリアライズや無限ループから冗長な情報を減らすためにreference型を使う。
object-property = (UTF-8 value-type) | (UTF-8-empty object-end-marker)
anonymous-object-type = object-marker *(object-property)
この型は未サポートです。将来的に使うために予約されています。
null型はnull型マーカーとして示される。型マーカー以外の情報は付与しない。
null-type = null-marker
undefined型はundefined型マーカーとして示される。型マーカー以外の情報は付与しない。
undefined-type = undefined-marker
Amf0は匿名オブジェクト、型オブジェクト (typed object)、配列、EcmaArrayとして複雑なオブジェクトを定義する。もしオブジェクトグラフで複雑なオブジェクトの同じインスタンスが1回よりも多く存在すれば、referenceを送信しなければならない。reference型は符号なし16ビット整数で以前にシリアライズしたオブジェクトのテーブルにインデックスを振っていく。インデックスは0から始まる。
reference-type = reference-marker U16 ; ある複雑な型へのインデックスポインター
Ecma Arrayまたは『関連付けられた』Arrayは普通でないインデックスを含むActionScript配列のときに使う。この型は複雑な型が考慮されており、それ故referenceによってインスタンスが再び現れることもある。すべてのインデックスは数字の文字列が『キー』として扱われる。この型の符号化目的はは匿名タイプにとても似ている。
associative-count = U32
ecma-array-type = associative-count *(object-property)
32ビットassciative-countは4,294,967,295の関連配列エントリーを理論的最大として含むことができる。
object-end-markerは匿名オブジェクト、型オブジェクト、連想配列のオブジェクトプロパティーセットの末端を示す特別な型として使われる。それはこの型の外は予期しない。このマーカーは空のUTF8文字とobject end型が合わさったものが先導する。
object-end-type = UTF-8-empty object-end-marker ; 0x00 0x00 0x09