官方文檔https://wwwimages2.adobe.com/content/dam/acom/en/devnet/pdf/amf0-file-format-specification.pdf
看懂這個文檔須要先看懂一個規範https://tools.ietf.org/html/rfc2234html
若是瞭解正則表達式, 這裏面的有些概念更容易理解程序員
;能夠有N個element rule_name = element element element
; 下面的4個CRLF定義是徹底相同的 CRLF = %d13.10 ; 用點分隔 CRLF = %x0D.0A CRLF = %d13 %d10 CRLF = %x0D %x0A ; 下面的3個abc的定義也是同樣的 abc = "abc" abc = "a" "b" "c" a = "a" b = "b" c = "c" abc = a b c
;接受a, b, c, d這4個規則中的其中一個, 至關於"或" rule = a / b / c / d AMF0規範中, 使用|代替了/ rule = a | b | c | d
rule = a rule =/ b rule =/ c /d ;結果等同於 rule = a / b / c / d
可選元素使用場景舉例:正則表達式
DIGIT = "0" / "1" / "2" / "3" / "4" / "5" / "6" / "7" / "8" / "9" ;它表示了數字字符的集合, 等同於 DIGIT = %x30-39
rule = elem (foo / bar) blat 等同於 rule = (elem foo blat) / (elem bar blat)
rule = 1*10 DIGIT ; 1到10個數字 rule = 2 DIGIT ; 2個數字 rule = * DIGIT ; 任意個數字(0到無窮大) rule = *1 DIGIT ; 0到1個數字 rule = [DIGIT] ; []表示可選, 等同於 *1 DIGIT
AMF0的元素的第1個字節爲marker, 表示這段內容的編碼格式. 不一樣的marker,內容的編碼格式不一樣編碼
數字Number 雙精度浮點數
0x00 + 8字節的IEEE-754浮點數 IEEE754說明.net
Boolean
0x01 + 1字節(0,或1)code
String
使用UTF-8編碼
0x02 + 2字節長度 + 字符串orm
Object
按照key-value的形式存儲
0x03 + (String + Value) + (String + Value) + ... + EMPTY String + 0x09htm