php中序列化与解序列化 vs BT bencoding的编码方法

print_r( unserialize('a:7:{s:3:"aid";i:1752;s:4:"name";s:9:"cmkit.zip";s:4:"type";s:3:"zip";s:9:"attachurl";s:19:"
Mon_0506/4_1752.zip";s:8:"needrvrc";N;s:4:"size";d:71;s:4:"hits";i:0;}'));
echo serialize(12345);
echo serialize('abcde');
$arr=array(1=>'12345',2=>'abcde');
echo serialize($arr);

echo '
';
class ab{
 var $a=1;
 var $b='1';
 var $c;
 function cccc(){
  return ;
 }
}
$aa=new ab;
echo serialize($aa);
?>

输入:Array
(
[aid] => 1752
[name] => cmkit.zip
[type] => zip
[attachurl] => Mon_0506/4_1752.zip
[needrvrc] =>
[size] => 71
[hits] => 0
)
i:12345;s:5:”abcde”;a:2:{i:1;s:5:”12345″;i:2;s:5:”abcde”;}
O:2:”ab”:3:{s:1:”a”;i:1;s:1:”b”;s:1:”1″;s:1:”c”;N;}

BT种子文件使用了一种叫bencoding的编码方法来保存数据。
bencoding现有四种类型的数据:srings(字符串),integers(整数),lists(列表),dictionaries(字典)
编码规则如下:
strings(字符串)编码为:<字符串长度>:<字符串>
例如: 4:test 表示为字符串”test”
4:例子 表示为字符串“例子”
字符串长度单位为字节
没开始或结束标记

integers(整数)编码为:i<整数>e
开始标记i,结束标记为e
例如: i12345e 表示为整数12345
i-12345e 表示为整数-12345
整数没有大小限制
i0e 表示为整数0
lists(列表)编码为:le
开始标记为l,结束标记为e
列表里可以包含任何bencoding编码类型,包括整数,字符串,列表,字典。
例如: l4:test5abcdee 表示为二个字符串["test","abcde"]

dictionaries(字典)编码为de
开始标记为d,结束标记为e
关键字必须为bencoding字符串
值可以为任何bencoding编码类型
例如: d3:agei20ee 表示为{“age”=20}
d4:path3:C:\8:filename8:test.txte 表示为{“path”=”C:\”,”filename”=”test.txt”}

关于 admin

给我一个支点,我可以创造一个杠杆。
此条目发表在 PHP, 未分类 分类目录。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。 必填项已被标记为 *

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>