我想将最大长度为15的字符串转换为唯一的长号。我试图使用BigInteger的longValue()函数。
BigInteger bigInt = new BigInteger("abcdeabcdeabcda".getBytes());
long n = bigInt.longValue();
先谢谢
答案 0 :(得分:0)
不,你不能 - 至少没有碰撞。
ASCII是每个字符7位和15 * 7 = 105
位 - 你不能把它放到一个长的。
你建议你可能不需要完整的ASCII - 也许是64位而不是15 * 6 = 90
,但仍然太长。
即使案例无关紧要,你可以在没有四个字母字符的情况下使用基数32,但仍然有15 * 5 = 75
,这仍然是64位数字的错误。
您需要接受会发生碰撞,但也许有办法减少它们。你是如何生成这15个字符的字符串的?你有没有可以使用的模式?
问题selected answer @Athanor指出有一个好主意 - 使用两个长点。 2 * 64 = 128
。使用7位ASCII的潜在105
位数可以很好地适应两个长。