tlv格式 php,TLV格式在PHP中的应用 -电脑资料

TLV格式和TLV在PHP5中的应用,

讲到TLV格式可能很多人都没有听说过吧。不过不要紧,今天我们就一直来了解它。

TLV是一种可变格式,主要用到在客服端与服务端之间的数据发送。说道其本质是是客服端向服务段数据传输双方规定的一个协议。

TLV中T、L字段的长度往往固定(通常为1~4bytes),V字段长度可变。顾名思义,T字段表示数值类型,L字段表示数值长度、V字段往往用来存放数值。

T:Tag标识,用于标识该数据元,类似于数组中的key

L:Length长度,TLV中Value的长度

V:Value数据本身,其中Value本身也可以包含TLV

接下来我们以PHP形式的方式来讲解TLV,在PHP中TLV其表现形式可以用数组来表示,如下:

$tag = 0x103

$value = “Test TLV”;

$ret = array($tag,strlen($value),$value);

print_r($ret);

在这段代码中数据ret就是TLV在PHP中的表示。其中strlen($value)为TLV中的Length(T),其中需要注意的是$tag和length必须为int类型。当然这段代码并不完整。以下代码段是对TLV进行了处理的TLV。

/**

TLV包解析类

*/

class Tlv {

private $buffer;

private $t_len = 4;               //T长度

private $l_len = 4;               //L长度

private $buf_len =0;        //字节流长度

private $buf_array = array();

/**

* 构造函数

*/

function __construct(){}

/**

* 解析数据

*

* @param byte $buffer       二进制流数据

* @param $IsArray

* @return array

*/

function Read($buffer,$IsArray=false){

$this->buffer = $buffer;

$this->buf_len = strlen($this->buffer);

$isMore = false;

$tmp_array = array();

$tmp_key = "";

//清空数组

if(isset($this->buf_array)){

unset($this->buf_array);

$this->buf_array = array();

}

$i=0;

while($ibuf_len){

//获取TGA

$t = $this->getLength($i,$this->t_len);

if($this->toHex($t) == "0xffffffff") break;

$i += $this->t_len;

//获取Length

$l = $this->getLength($i,$this->l_len);

$i += $this->l_len;

//获取Value

$v = substr($this->buffer,$i,$l);

$i += $l;

if($IsArray){

$this->buf_array[$this->toHex($t)] =array($this->toHex($t),$l,$v);

}else{

array_push($this->buf_array,array($this->toHex($t),$l,$v));

}

}

return $this->buf_array;

}

//将数组转换二进制数据

function Write($arrdata){

$i = 0;

$msg = null;

while($i

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值