私は、次のタイプのエンコードされたデータを mysql データベースの BLOB タイプの列に格納するプロジェクトに取り組んでいます。いろいろ聞いてみたところ、これは Bencode だと言われましたが、オンラインで見たところ、標準の Bencode ではないようです。
ベンコードのウィキ
http://en.wikipedia.org/wiki/ベンコード
エンコードされたデータの例
a:11:{i:0;a:3:{s:11:"question_id";s:2:"46";s:6:"answer";s:1:"2";s:7:"correct";b:1;}i:1;a:3:{s:11:"question_id";s:2:"45";s:6:"answer";s:1:"2";s:7:"correct";b:0;}i:2;a:3:{s:11:"question_id";s:2:"44";s:6:"answer";s:1:"2";s:7:"correct";b:0;}i:3;a:3:{s:11:"question_id";s:2:"43";s:6:"answer";s:1:"1";s:7:"correct";b:0;}i:4;a:3:{s:11:"question_id";s:2:"42";s:6:"answer";s:1:"3";s:7:"correct";b:0;}i:5;a:3:{s:11:"question_id";s:2:"41";s:6:"answer";s:1:"2";s:7:"correct";b:0;}i:6;a:3:{s:11:"question_id";s:2:"40";s:6:"answer";s:1:"0";s:7:"correct";b:1;}i:7;a:3:{s:11:"question_id";s:2:"39";s:6:"answer";s:1:"0";s:7:"correct";b:0;}i:8;a:3:{s:11:"question_id";s:2:"38";s:6:"answer";s:1:"1";s:7:"correct";b:1;}i:9;a:3:{s:11:"question_id";s:2:"37";s:6:"answer";s:1:"3";s:7:"correct";b:0;}i:10;a:3:{s:11:"question_id";s:2:"36";s:6:"answer";s:1:"2";s:7:"correct";b:1;}}
これまでに気づいたこと
エンコーディングは、Bencode と同様の文字と整数を使用して、さまざまな種類のデータを記述していることに気付きました。
例:
s:11:"question_id";
はs
「string」の略で11
、string の長さを定義していると思いますquestion_id
。また、データの先頭 ( a:11:
) は長さ 11 の配列を記述しているように見えます。これは標準の Bencode に似ていますが、Bencode が使用する標準の構文を使用していないようです。
これがどのタイプのエンコーディングであるか、誰にも分かりますか? これは非標準の Bencode 形式ですか、それともまったく別のものですか? PHP または Python でパーサーを探していますが、エンコーディングの名前があれば検索に役立ちます。