0

String クラスの組み込みの hash() メソッドを使用して、ハッシュされた URL の 16 進数バージョンの絶対値の名前でディレクトリを作成しようとしています。hash() が否定的な結果を生成する可能性があり、マイナス記号で始まるディレクトリ名は処理がやや難しいため、これの絶対値が必要です。ただし、ハッシュされた URL 文字列の 16 進数バージョンの絶対値を取得する方法がわかりません。

4

2 に答える 2

4

16 進値に負の符号はありません。これは、値の 2 の補数ビット パターンの 16 進数表現です。

System.out.println(Integer.toHexString(-1)); // ffffffff
System.out.println(Integer.toHexString(Integer.MIN_VALUE)); // 80000000

あなたのお母さんがいつもあなたに言ったように:「あなたはあなたのままで完璧です」:

String dirname = Integer.toHexString(dirname.hashCode()); // never has minus sign
于 2014-04-12T03:53:50.883 に答える
0

long に強制し、上位 32 ビットをマスクしてから、それを文字列に変換します。

 long longHash = intHash;
 long nonNegativeLongHash = longHash & ((1L << 32) - 1);
 String unsignedHex = Long.toHexString(nonNegativeLongHash);
于 2014-04-12T03:56:01.343 に答える