gpt4 book ai didi

java - 如何获取十六进制字符串的整数值

转载 作者:行者123 更新时间:2023-11-30 02:34:50 25 4
gpt4 key购买 nike

我有下面的代码:

try {
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] byteArray = md.digest(myString.getBytes("UTF-8"));
StringBuffer sb = new StringBuffer();
for (int i = 0; i < byteArray.length; i++) {
sb.append(Integer.toString((byteArray[i] & 0xff) + 0x100, 16).substring(1));
}

int n = (int) Long.parseLong(sb.toString());
System.out.println(n);
} catch (Exception e) {
System.out.println(e.getMessage());
}

出于某种原因,我不断收到输出:

对于输入字符串:“4739c5c11d833bb199c16ff95a92b267”

当这段代码中没有任何地方有这个 print 语句时...

我正在尝试获取上面十六进制字符串的 int 值,但我不知道发生了什么。

最佳答案

您创建输入字符串的 md5 哈希值。

那个哈希值就是 47.... 值!

而且该值太大,无法放入 long 或 int 变量!因此你会得到一个异常,并且 catch block 开始运行。

长话短说:退后一步,重新思考这个方法应该做什么。因为它根本不能这样工作。

除此之外:解析十六进制字符串时,您必须使用

parseLong(input, 16)

为了告诉 java 我们会这样做,它应该期待一个十六进制数字。

我的直觉是:你给自己带来了过重的负担。您缺少非常基本的 Java 语言元素的知识,但您打算使用诸如 MessageDigest 之类的高级概念。

编辑:给出您的评论:阅读有关 BigInteger 类的信息。它提供了保存任意大整数的方法。

关于java - 如何获取十六进制字符串的整数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43359713/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com