gpt4 book ai didi

java - 使用BigInteger longValue()将15个字符长度的字符串转换为唯一的长数字

转载 作者:行者123 更新时间:2023-12-02 21:45:59 28 4
gpt4 key购买 nike

我想将最大长度为15的字符串转换为唯一的长数字。我正在尝试使用BigInteger的longValue()函数。

BigInteger bigInt = new BigInteger("abcdeabcdeabcda".getBytes());
long n = bigInt.longValue();
  • 我们可以避免在String的15个字符之前发生长值冲突吗?
  • 字符串可以包含字母数字,包括特殊字符。
  • 不要将字符串加密太长的想法。但是,为了提高配置单元查询的计数(不同)的性能。
  • 我们注意到,如果使用long代替字符串,则 hive 中的count(distinct)会提供良好的性能。
  • 我们不想要大约。或概率计数不同。我们希望确切的计数是不同的。

  • 提前致谢

    最佳答案

    不,你不能-至少没有碰撞。

    ASCII是每个字符7个位,15 * 7 = 105位-您不能将它容纳太长。

    您建议您可能不需要完整的ASCII-也许是64位的6位基数,但15 * 6 = 90仍然太长。

    即使大小写无关紧要,即使您没有四个字母字符也可以轻松实现,但使用基数32时,您仍然拥有15 * 5 = 75,对于64位数字而言,它仍然是个错误。

    您将需要接受会有碰撞的情况,但是也许有减少碰撞的方法。您如何生成这15个字符的字符串?有没有可以利用的模式?

    @Athanor指出的问题selected answer有一个好主意-使用两个long。 2 * 64 = 128。您可能使用7位ASCII的105位号可以很合适地分为两个整数。

    关于java - 使用BigInteger longValue()将15个字符长度的字符串转换为唯一的长数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25281697/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com