コード例 #1
0
        private void AnalyseDictionary(IBNode parent)
        {
            // 字典一定是d开始的
            if (GetCurrentCharMove() != 'd')
            {
                return;
            }

            // 循环分析键值对
            do
            {
                KeyValueNode keyValueNode = _bNodeFactory.GetBNode('k') as KeyValueNode;
                // 键值对,键一定是string
                keyValueNode.SetKey(AnalyseString());
                // 值
                switch (GetCurrentChar())
                {
                case 'i':     // 数字
                    keyValueNode.SetValue(AnalyseInteger());
                    keyValueNode.ValueType = 'i';
                    break;

                case 'd':     // 字典
                    AnalyseDictionary(keyValueNode);
                    keyValueNode.ValueType = 'd';
                    break;

                case 'l':     // 列表
                    AnalyseList(keyValueNode);
                    keyValueNode.ValueType = 'l';
                    break;

                default:
                    keyValueNode.SetValue(AnalyseString());
                    keyValueNode.ValueType = 's';
                    break;
                }
                parent.Child.Add(keyValueNode);
            } while (GetCurrentChar() != 'e');
            GetCurrentCharMove();
        }
コード例 #2
0
ファイル: CommonAnalyser.cs プロジェクト: htornado/BTTool
        public IBNode Analysis(byte[] torrentStream)
        {
            // 清空上一次处理的信息
            BNodeList = new List<IBNode>();
            _bNodeFactory = new BNodeFactory(BNodeList);
            index = 0;

            this.torrentStream = torrentStream;
            // bt文件一定是一个字典开始的

            DictNode rootNode = _bNodeFactory.GetBNode('d') as DictNode;
            AnalysisDictionary(rootNode);
            return rootNode;
        }
コード例 #3
0
        public IBNode Analyse(byte[] torrentStream)
        {
            // 清空上一次处理的信息
            BNodeList     = new List <IBNode>();
            _bNodeFactory = new BNodeFactory(BNodeList);
            index         = 0;

            this.torrentStream = torrentStream;
            // bt文件一定是一个字典开始的

            DictNode rootNode = _bNodeFactory.GetBNode('d') as DictNode;

            AnalyseDictionary(rootNode);
            return(rootNode);
        }