首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Java中将十六进制字符串转换为有符号的int值?

如何在Java中将十六进制字符串转换为有符号的int值?
EN

Stack Overflow用户
提问于 2018-03-26 00:06:14
回答 1查看 911关注 0票数 0

在我的计算机组织课上,我们被分配了一个程序。我被困在一件事上了。我的值7FF作为字符串,我需要将它转换为一个签名的int。我可以把它拿到一个未签名的整数。我得到了2047的价值。正确的值应该是-1。

现在我所拥有的是:

代码语言:javascript
运行
复制
int x = Integer.parseInt("7FF", 16);

我试过用一个短的,但这没有任何作用。任何帮助都将不胜感激!谢谢。

编辑:所以我的主要问题是,我如何产生一个输出为-1与六角字符串"7FF"?

EN

回答 1

Stack Overflow用户

发布于 2018-03-26 00:53:13

若要将十六进制字符串解析为11位有符号值,可以使用以下方法。

该算法是由肖恩·埃伦·安德森( Sean )从钻头缠绕式黑客中提取的。

代码语言:javascript
运行
复制
public static int parseElevenBits(String hex) {
    return Integer.parseInt(hex, 16) << 21 >> 21;
}

测试

代码语言:javascript
运行
复制
System.out.println(parseElevenBits("400"));
System.out.println(parseElevenBits("401"));
System.out.println(parseElevenBits("7FE"));
System.out.println(parseElevenBits("7FF"));
System.out.println(parseElevenBits("0"));
System.out.println(parseElevenBits("1"));
System.out.println(parseElevenBits("3FE"));
System.out.println(parseElevenBits("3FF"));

输出

代码语言:javascript
运行
复制
-1024
-1023
-2
-1
0
1
1022
1023
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49482282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档