私は画像のURL(最初の2文字のMD5)を取得 にDBpediaの者extraction_framework(ImageExtractor#getImageUrl)を使用していウィキペディアは画像パスのハッシュ部分を計算するためにさまざまな方法を使用しますか?
val md = MessageDigest.getInstance("MD5")
val messageDigest = md.digest(fileName.getBytes)
val md5 = (new BigInteger(1, messageDigest)).toString(16)
val hash1 = md5.substring(0, 1)
val hash2 = md5.substring(0, 2);
val urlPart = hash1 + "/" + hash2 + "/" + fileName
ほとんどの時間、機能が正常に動作しますが、いくつかの例、それ が正しくありません: "Stewie_Griffin.png" については
、私は2月26日/ Stewie_Griffin.png得るが、実際 1は、ソースファイル情報はこちら0/02/Stewie_Griffin.png
です: http://en.wikipedia.org/wiki/File:Stewie_Griffin.png http://upload.wikimedia.org/wikipedia/en/0/02/Stewie_Griffin.png
ハッシュ方式は時々動作しない理由を任意のアイデア?
先行ゼロが食べられているときのおかげで、ここでの修正です:valのMD5 =(result.length%2!= 0) "0" +は、他の結果 –
を引き起こす場合、私はorg.apache.commonsを使用することをお勧めします。 codec.digest.DigestUtils#md5Hex手動で計算するのではなく –
@ tommy chheng md5にいくつかのリードがある場合は、 '0' –