我原本想用16进制来压缩30位10进制的整数,结果发现C#里最长的就是Ulong 0 ~ 18446744073709551615 才20位

解决方案 »

  1.   

    最大的是decimal,不过也不一定够你用,干脆自己写个bigint的类吧
      

  2.   

    同解!只能是用bigint自己重定一个吧。
      

  3.   

    用二进制的话
    30位整数要用100bit
    即要13个byte
      

  4.   

    只能包含0-9 A-Z的话,16位不够啊
    30/log(36) = 19.27,也就是说至少20位才够呢
      

  5.   

    to hzw66(超越理想): sorry,我算错了
      

  6.   

    To:diandian82(点点)
    能否具体一点,偶想得不是太明白,这么大长的一个数处理真难
      

  7.   

    string -> string?
    那有什么ulong什么的?!
      

  8.   

    你这个30位的整数到底是用什么来表示的?long?ulong?string?
      

  9.   

    TO:wood87654321(wood87654321) 
    即使用36进制,16个数也无法容纳30个10进制数。所以字母A-Z不应老老实实地视为10-35,而应作为自定义的更大数值的常量
    ---------------------------------------------------------
    那10-35用什么表达?
      

  10.   

    自己实现BigInt类的代码网上有好多可以参考
      

  11.   

    http://www.codeproject.com/csharp/biginteger.asp
      

  12.   

    看来上次想得有漏洞,如果不打算自己实现BigInt类而继续原思路的话,可以将A-Z区分大小写,a-z又可以增加26,62进制肯定够了
      

  13.   

    也不知道你要的是性能,还是存储空间,还是单纯的压缩算法。三十位可以学学ORACLE怎么管理的,这不是现成的例子吗。
      

  14.   

    IES是大连IT猎头行业强势企业,致力于IT行业内的猎头服务。公司客户群主要是世界500强IT企业及国内优秀的大型软件研发及外包企业。公司在同行业中有良好的信誉和口碑,在众多500强客户中取得高度评价。现受委托企业高薪招聘以下职位:●世界500强IT企业(全日资企业,自主研发,非外包,工作地点:大连)
     java 方向
    职位:应用软件PL / PM
    人数:2人
    学历:大学本科以上
    外语:英语四级、日语国际二级
    经验:具有3/5年以上Web,Java,Struts相关工作经验,要求担当过PL或Sub-LeaderC / C++ 方向
    职位:应用软件PL / PM 高级程序员
    人数:8人
    学历:大学本科以上
    外语:英语四级、日语国际二级
    经验:具有3/5年以上C / C++相关工作经验,要求担当过PL或Sub-Leader
    相关待遇:
    1 5险1金(40%住房公积金:个人15%  公司25%)
    2 加班费(按照国家规定给与相应加班费)
    3 每年年终奖(3月工资左右)
    4 职务津贴 (PL:1000 Spl:500)
    5 每年一次调薪 (按百分比,工资越高调动越大)
    6 取暖费 ( 国家规定 )
    7  带薪休假● 世界500强IT企业(全日资企业,外包,工作地点:大连 / 东京)
    月薪不低于30万日元
      java 方向
    职位:SE 
    人数:不限
    学历:大学本科以上
    外语:日语国际二级相当
    经验:具有至少1年以上Java对日项目相关工作经验C / C++ 方向
    职位:SE
    人数:不限
    学历:大学本科以上
    外语:日语国际二级相当
    经验:具有至少1年以上C / C++对日项目相关工作经验
    .NET 方向
    职位:SE
    人数:不限
    学历:大学本科以上
    外语:日语国际二级相当
    经验:具有至少1年以上.net对日项目相关工作经验人力资源顾问:杨小姐
    Email:[email protected]
    Tel:0411-84509856/84509836
    Mob:13236944206
      

  15.   

    如果要完全表示30位10进制数需要 log2(10^30)+1=101 个二进制位,也就是26个字节。如果用25个字节,能够表达 
      633825300114114700748351602688 ~ -633825300114114700748351602687
    之间的数据,虽然也是20位10进制数,但是仅仅完全表达了19位10进制数范围。建议使用25字节十六进制来保存。
      

  16.   

    同理,36进制就是 log36(10^30*2)=20 位,64 进制就是 log64(10^30*2)=17 位。