怎样将一个整数(位数不确定),转换为唯一的6位整数

解决方案 »

  1.   

    MD5小概率事件上也会重复的。MD5生成的是128位二进制。按照无符号数来说是 2的128次方个   整数
    3.4028236692093846346337460743177e+386位整数,使用字符串表示的话,包括半角全角也就是6位20进制,  20的6次方个整数
    64000000如果6位整数使用16进制表示,且用字符串表示,包括全角半角,即6位32进制, 32的6次方个整数
    1073741824如果按6位字符表示,而不是整数,ASCII码常用256,包括可用的全角半角,也就是差不多6位450进制,450的6次方个整数
    8303765625000000楼主啊,6位干不了什么啊。
      

  2.   

    当然,如果使用Unicode编码而不是用AscII码,有1114112个字符位可用并且已经包括了全角半角,这样有6位1114112进制,即1114112的6次方个样式1.9123752394312689329034610557678e+36
    这个已经接近MD5的功效了,当然如果想要包装MD5,则需要使用比MD5更大空间的低冲突空间。UTF8 UTF16 UTF32应该能满足了。
    lz尝试把MD5封装,然后将返回的128位二进制转化成 UTF8\16\32所能表示的字符数的进制形式,这样就能得到6位字符形式了。而且冲突率跟MD5是一样的。
      

  3.   

    unicode的一个字符占多个字节。
      

  4.   


    占多个字节又能怎样,UTF32还不知道到底占几个字节呢,不定的。
    只是最后结果是6位显示而已。
    占多个字节,so what?