Если бы Вы просто используете доллары и центы, я использовал бы длинное (смещенный 2 десятичными разрядами). При необходимости в большем количестве детали большое десятичное число может быть способом пойти.
Так или иначе, я, вероятно, расширил бы класс, чтобы иметь .toString (), который использует правильный формат, и как место для помещения других методов, которые могли бы подойти (Для длинного, умножение и делиться спутаются, если десятичное число не будет скорректировано)
кроме того, если Вы используете, определяют Ваш собственный класс и интерфейс, затем можно заменить реализацию по желанию.
На самом деле они согласны.
Как уже отмечал Ханс Догген, PHP выводит дайджест сообщения в шестнадцатеричной системе счисления, если вы не установите для параметра raw output значение true.
Если вы хотите использовать ту же нотацию в Java, вы можете использовать что-то вроде
for (byte b : digest) {
System.out.format("%02x", b);
}
System.out.println();
для соответствующего форматирования вывода.
Мне кажется, что PHP использует HEX-нотацию для байтов, которые производит Java (1a = 26) - но я не проверял все выражение целиком.
Что произойдет, если вы запустите байт массив с помощью метода на этой странице?
Haven't tested it, but try this:
BigInteger hash = new BigInteger(1, digest);
String enc = hash.toString(16);
if ((enc.length() % 2) != 0) {
enc = "0" + enc;
}
This is snapshot from my method that makes java's md5 and sha1 match php.