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