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