相关疑难解决方法(0)

BigInteger.toString方法正在删除前导0

我正在尝试使用MessageDigest生成MD5总和.我有以下代码.

byte[] md5sum = digest.digest();
BigInteger bigInt = new BigInteger(1, md5sum);
output = bigInt.toString(16);
Run Code Online (Sandbox Code Playgroud)

这不返回32个字符串,而是返回31个字符的字符串 8611c0b0832bce5a19ceee626a403a7

期望的字符串是 08611c0b0832bce5a19ceee626a403a7

输出中缺少前导0.

我尝试了另一种方法

byte[] md5sum = digest.digest();
output = new String(Hex.encodeHex(md5sum));
Run Code Online (Sandbox Code Playgroud)

输出正如预期的那样.

我检查了doc并且Integer.toString根据它进行了转换

使用Character.forDigit提供的数字到字符映射,如果合适,前缀为减号.

并在Character.forDigit方法

如果0 <= digit <radix,则数字参数有效.

有人可以告诉我两种方法有何不同以及为什么删除前导0?

java tostring biginteger

25
推荐指数
3
解决办法
1万
查看次数

标签 统计

biginteger ×1

java ×1

tostring ×1