Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 反向长数组到字符串算法_Java_String_Algorithm_Long Integer - Fatal编程技术网

Java 反向长数组到字符串算法

Java 反向长数组到字符串算法,java,string,algorithm,long-integer,Java,String,Algorithm,Long Integer,我需要反转以下将长数组转换为字符串的算法: public final class LongConverter { private final long[] l; public LongConverter(long[] paramArrayOfLong) { this.l = paramArrayOfLong; } private void convertLong(long paramLong, byte[] paramArrayOfByte, int paramInt) {

我需要反转以下将长数组转换为字符串的算法:

public final class LongConverter {
private final long[] l;

public LongConverter(long[] paramArrayOfLong) {
    this.l = paramArrayOfLong;
}

private void convertLong(long paramLong, byte[] paramArrayOfByte, int paramInt) {
    int i = Math.min(paramArrayOfByte.length, paramInt + 8);
    while (paramInt < i) {
        paramArrayOfByte[paramInt] = ((byte) (int) paramLong);
        paramLong >>= 8;
        paramInt++;
    }
}

public final String toString() {
    int i = this.l.length;
    byte[] arrayOfByte = new byte[8 * (i - 1)];
    long l1 = this.l[0];
    Random localRandom = new Random(l1);
    for (int j = 1; j < i; j++) {
        long l2 = localRandom.nextLong();
        convertLong(this.l[j] ^ l2, arrayOfByte, 8 * (j - 1));
    }
    String str;
    try {
        str = new String(arrayOfByte, "UTF8");
    } catch (UnsupportedEncodingException localUnsupportedEncodingException) {
        throw new AssertionError(localUnsupportedEncodingException);
    }
    int k = str.indexOf(0);
    if (-1 == k) {
        return str;
    }
    return str.substring(0, k);
}
其结果是打印400

如果有人能说出这是什么算法,或者我如何能逆转它,那就太好了


感谢您的帮助

如前所述,这不是一个可解决的问题,因为

  • 您只使用
    l[0]
    ,因此任何附加的
    long
    值都可以是任何值

  • 可以保证将
    long[]
    转换为
    字符串是没有任何意义的,您需要解释所需的结果,而不仅仅是实际结果。您似乎没有使用数组的其余部分。仅使用
    l[0]
    ,因此这是您希望重新创建的唯一值。感谢您的快速回答。我会尽力用你的答案找到解决办法。我知道将长数组转换为字符串没有意义,但我在反编译jar文件时得到了这段“美妙”的代码。
    System.out.println(new LongConverter(new long[]{-6567892116040843544L, 3433539276790523832L}).toString());