AMF解析(一)

 

AMF是AS中的一种数据格式,非常简洁,那为什么简洁呢,以前一直不清楚,看了AMF的数据格式后,才发现原来真的很简洁,数据量小。。呵呵,废话了这么多,下面我们来看下吧。

AMF一共有13种数据类型,每种类型都用一个字节来表示

undefined =  0

null      1

false     2

true      3

int       4

double    5

string    6

xml-doc    7

date      8

array     9

object    10

xml       11

byte-array=  12

以上类型一目了然,其实as中ByteArray.writeObject的时候,都是以AMF格式写入字节数组中,那么下面我们来逐个利用程序分析下吧,每种数据类型定义好后,都利用ByteArray.writObject写入数据,再输出。

undefined 就不说了,遇到不认识的类型,就0吧。

null:字节数组={1},很简单,null类型为1,所以后面不带任何东西。

false:字节数组={2},同上。

true:字节数组={3},同上。

int:这时候我们要真正开始讲AMF了,我们分别以10,100,1000来分析下。

1、var byteArray:ByteArray = new ByteArray();

   byteArray.writeObject(a);

   a = 10 -> {4,10}

   a = 10000 -> {4,206,16}

   a = 100000 -> {4,134,141,32}

   a = 10000000 -> {4,130,177,150,128}

每次都是以类型字节开始,4表示是int型。int最大占4个字节,超出后AMF就会以double类型发送。后续每个字节的最高位,表示下一字节是否有效。

{4,10},10转成二进制 = 0000 1010,由于最高位为0,所以后一字节无效,那么直接返回该int值为10

{4,206,16},206转成二进制 = 1100 1110,由于最高位为1,所以后一字节仍然有效,此时将1100 1110最高位置0并左移7位,变成0010 0111 0000 0000。再看16 = 00010 000,由于最高位为0,故下一字节无效,两字节做"|"运算0010 0111 0000 0000 | 00010 000便得出结果10000。

其他2个数依次类推大家自己算吧!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PHP 解析 AMF(Action Message Format)可以使用 open-flash-remoting 扩展来实现。Open-flash-remoting 是一个用于 AMF 解析和处理的扩展,可以让 PHP 与 Flash 进行数据交互。 要解析 AMF 数据,首先需要安装 open-flash-remoting 扩展。可以通过以下步骤来完成安装: 1. 下载 open-flash-remoting 可执行程序(.dll 文件)对应的版本,确保与 PHP 的版本兼容。 2. 找到 PHP 安装目录下的 ext 文件夹,将下载的 .dll 文件复制到该文件夹中。 3. 打开 PHP 的配置文件(php.ini),找到并编辑以下行: ```ini ; Dynamic Extensions ; ... ; ... extension=php_open_flash remoting.dll ``` 4. 保存并关闭配置文件。 5. 重启 Web 服务器(例如 Apache)。 在成功安装了 open-flash-remoting 扩展后,就可以通过以下步骤来解析 AMF 数据: 1. 接收从 Flash 发送的 AMF 数据。 2. 使用 open-flash-remoting 扩展提供的函数,如 amf_decode(),来解析接收到的 AMF 数据。 3. 处理解析后的数据,根据数据类型和结构进行相应的操作,如存储到数据库、生成 HTML 内容等。 4. 将处理后的数据返回给 Flash 或其他需要的应用程序。 PHP 解析 AMF 数据的好处是,它可以实现更高效的数据交互,减少数据传输量和处理时间。AMF 是一种二进制格式,比起 XML 或 JSON 格式,AMF 的数据量更小,解析速度更快,适用于需要频繁传输大量数据的应用场景,如在线游戏、聊天应用等。 总之,通过安装 open-flash-remoting 扩展,我们可以在 PHP 中解析和处理 AMF 数据,实现高效的数据交互。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值