gpt4 book ai didi

Java将int转换为十六进制并再次转换回来

转载 作者:IT老高 更新时间:2023-10-28 13:52:08 26 4
gpt4 key购买 nike

我有以下代码...

int Val=-32768;
String Hex=Integer.toHexString(Val);

这相当于 ffff8000

int FirstAttempt=Integer.parseInt(Hex,16); // Error "Invalid Int"
int SecondAttempt=Integer.decode("0x"+Hex); // Error "Invalid Int"

因此,最初,它将值 -32768 转换为十六进制字符串 ffff8000,但随后无法将十六进制字符串转换回整数。

.Net 中它按我的预期工作,并且 返回 -32768

我知道我可以编写自己的小方法来自己转换它,但我只是想知道我是否遗漏了什么,或者这是否真的是一个错误?

最佳答案

int val = -32768;
String hex = Integer.toHexString(val);

int parsedResult = (int) Long.parseLong(hex, 16);
System.out.println(parsedResult);

这就是你可以做到的。

它不能按你的方式工作的原因:Integer.parseInt 采用有符号整数,而 toHexString 产生无符号结果。因此,如果您插入高于 0x7FFFFFF 的内容,则会自动抛出错误。如果您将其解析为 long ,它仍将被签名。但是当你将它转换回 int 时,它会溢出到正确的值。

关于Java将int转换为十六进制并再次转换回来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12005424/

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