实例讲解AMF格式

AMF协议是Action Message Format协议的简称,AMF协议是Adobe公司的协议,主要用于数据交互和远程过程调用。AMF采用二进制编码,这种方式可以高度压缩数据,因此非常适合用来传递大量的资料。

AMF使用第一个字节作为该数据的格式,有以下几种格式

type value
Number 0×00
Boolean 0x01
String 0x02
Object 0x03
MovieClip 0x04
Null 0x05
Undefined 0x06
Reference 0x07
MixedArray 0x08
EndOfObject 0x09
Array 0x0a
Date 0x0b
LongString 0x0c
Unsupported 0x0d
Recordset 0x0e
XML 0x0f
TypedObject 0x10
AMF3 data 0x11

下面举几个例子来说明常用的几种格式。

Number

00 7e 8f 00 00 00 00 00 00

00:第一个字节表示该amf的类型为double型,所以后面紧跟的8个字节为一个double型。

7e 8f 00 00 00 00 00 00:总共8位,是一个double类型。

Boolean

01 00

01:第一个字节表示该amf的类型为bool型,后面跟着一个字节表示bool类型的数。

00:00表示false,01表示true。

String

02 00 05 68 65 6c 6c 6f  

02:第一个字节表示该amf的类型为字符串类型。

00 05:两个字节表示字符串的长度,这两个字节表示字符串的长度为5。

68 65 6c 6c 6f:这5个字节表示字符串"hello"。

Object

Object类型是由一对一对的key和value组成,类似于一个数组,下面举个例子进行说明。

03 00 05 68 65 6c 6c 6f 00 7e 8f 00 00 00 00 00 00 00 03 61 70 70 
02 00 05 68 65 6c 6c 6f 00 00 09

03:第一个字节表示该amf的类型为字符串类型。

key:

00 05:表示字符串的长度。

68 65 6c 6c 6f:字符串"hello"。

val:

00:表示val的类型为double型,则后面8个字节为一个double型。

7e 8f 00 00 00 00 00 00:表示一个double型的数,表示上面那个key对应的值。

key:

00 03:表示字符串的长度。

61 70 70:字符串"app"。

val:

02:表示该数据类型为字符串。

00 05:表示字符串的长度。

68 65 6c 6c 6f 00 7e 8f:字符串"hello",表示上面那个key对应的值。

00 00 09:最后以00 00 09表示object类型结尾。

Array

Array的格式类似于Object。

08 00 00 00 02 00 05 68 65 6c 6c 6f 00 7e 8f 00 00 00 00 00 00 00 03 61 70 70 
02 00 05 68 65 6c 6c 6f

08:第一个字节表示Array型。

00 00 00 02:四个字节表示数组元素个数,当前数组元素个数两个。

key:

00 05:两个字节表示字符串的长度。

68 65 6c 6c 6f:字符串"hello"。

val:

00:表示val的类型为double型,则后面8个字节为一个double型。

7e 8f 00 00 00 00 00 00:表示一个double型的数,表示上面那个key对应的值。

key:

00 03:表示字符串的长度。

61 70 70:字符串"app"。

val:

02:表示该数据类型为字符串。

00 05:表示字符串的长度。

68 65 6c 6c 6f 00 7e 8f:字符串"hello",表示上面那个key对应的值。

到此也就把几个比较常见的类型用实例讲解了。

你可能感兴趣的:(实例讲解AMF格式)