官方文档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