System.Int32  有符号 32 位整数 -2,147,483,648 到 2,147,483,6473^14 = 4,782,969,而14位的0,1,2组成的串可以用 0 - 4,782,968 表示,内部用 int 表示足够了。

解决方案 »

  1.   

      static int ReadStr(string s)
      {
        if (s.Length != 14) return -1; // 如果为了效率, 本行可以省略
        int x = 0;
        for (int i = s.Length - 1, d = 1; i >= 0; i--, d *= 3)
        {
          x += d * (int)(s[i] - '0');
        }
        return x;
      }
      

  2.   

        插入 sql表里,统计 sql 表
      

  3.   

    还是用二进制方式效率高些,毕竟计算机是二进制的
    定义合适大小的缓冲区(byte数组),内部缓冲大小一般是4K(4096)
    遍历判断即可,为了提高效率,可以使用unsafe代码
      

  4.   

    写数据库参数的方式进行存储
    @parm
    获取System.Text.StringBuider
      

  5.   

    5楼的程序可行。构造一个数据库表格,设置列"data"为索引。
    然后用SQL筛选,举个例子:select distinct Data, count(*) as num
     from [数据库]
    group by data其中data是用5楼转换的数据,你看num列就是重复次数了。
      

  6.   

                // 逐行读取文本,网上很多,我不写了。我写统计部分。
                string[] a = File.ReadAllLines(@"1.txt"); // 200万行不能用这个,我只是举例。
                Hashtable hs = new Hashtable();
                foreach (string b in a)
                {
                    if (hs.ContainsKey(b))
                    {
                        hs[b] = Convert.ToInt32(hs[b]) + 1; // 重复次数
                    }
                    else
                    {
                        hs.Add(b, 1);
                    }
                }
                IDictionaryEnumerator ide = hs.GetEnumerator();
                while(ide.MoveNext())
                {
                    int y = Convert.ToInt32(ide.Value); // 大于2就是重复的,y是重复次数。
                }