应该用long就行了,看你的变量dr,是否用的是SqlDataReader?
那试试这个
data=dr.GetInt64(index);
or
data=(long)dr.GetValue(index);

解决方案 »

  1.   

    一位一位取出来分析,假设 取得16进制第0位 为 EConvert.ToString(Convert.ToInt32("E",16),2) 的值就为 1110
      

  2.   

    为了防止高位为0可以写成这样Convert.ToInt32(Convert.ToString(Convert.ToInt32("E",16),2)).ToString("0000")
      

  3.   

    设计得这么复杂,即使当初觉得不错,以后用起来也会不方便而且容易忘记细节,比如你要取其中一项,你还是要把整个int64取出来解析,而且如果以后你的某一项要改,要加长你又怎么办呢?如果你要加一项,你又怎么办呢,专门在数据库里添加一项的话,和你前面的“封装”设计有不一样,你如果自己编程也不过时麻烦一点,但是如果给其他人来维护这个数据表的话,只怕他会很郁闷吧。所以重写还是趁早的好