我正在尝试使用String类的内置hash()方法创建一个目录,其中包含散列网址的十六进制版本的绝对值。现在hash()可能产生否定结果,并且以减号开头的目录名有点难以处理,这就是为什么我需要这个的绝对值。但是,我无法弄清楚如何获取散列url字符串的十六进制版本的绝对值。
答案 0 :(得分:4)
十六进制值永远不会有负号!它只是该值的两个恭维位模式的十六进制表示。
System.out.println(Integer.toHexString(-1)); // ffffffff
System.out.println(Integer.toHexString(Integer.MIN_VALUE)); // 80000000
就像你的母亲总是告诉你的那样:"你完全按照自己的方式完善了#34;:
String dirname = Integer.toHexString(dirname.hashCode()); // never has minus sign
答案 1 :(得分:0)
将它强制转换为长,掩盖前32位,然后将其转换为字符串。
long longHash = intHash;
long nonNegativeLongHash = longHash & ((1L << 32) - 1);
String unsignedHex = Long.toHexString(nonNegativeLongHash);