Я пытаюсь преобразовать шестнадцатеричное значение String в целое число.Шестнадцатеричная строка была вычислена из хеш-функции (sha-1).Я получаю эту ошибку: java.lang.NumberFormatException.Я думаю, что это не нравится строковое представление шестнадцатеричного.Как я могу этого достичь.Вот мой код:
public Integer calculateHash(String uuid) {
try {
MessageDigest digest = MessageDigest.getInstance("SHA1");
digest.update(uuid.getBytes());
byte[] output = digest.digest();
String hex = hexToString(output);
Integer i = Integer.parseInt(hex,16);
return i;
} catch (NoSuchAlgorithmException e) {
System.out.println("SHA1 not implemented in this system");
}
return null;
}
private String hexToString(byte[] output) {
char hexDigit[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'A', 'B', 'C', 'D', 'E', 'F' };
StringBuffer buf = new StringBuffer();
for (int j = 0; j < output.length; j++) {
buf.append(hexDigit[(output[j] >> 4) & 0x0f]);
buf.append(hexDigit[output[j] & 0x0f]);
}
return buf.toString();
}
Например, когда я передаю эту строку: _DTOWsHJbEeC6VuzWPawcLA , его хеш его:get: java.lang.NumberFormatException: Для входной строки: " 0xC934E5D372B2AB6D0A50B9F0341A00ED029BDC15 "
Мне действительно нужно это сделать.У меня есть коллекция элементов, идентифицируемых их UUID, которые являются строкой.Я должен буду хранить эти элементы, но мои ограничения - использовать целое число в качестве их идентификатора.Вот почему я вычисляю хэш заданного параметра, а затем конвертирую в int.Может быть, я делаю это неправильно, но может кто-то дать мне совет, чтобы достичь этого правильно !!
Спасибо за вашу помощь !!