【发布时间】:2018-03-26 00:06:14
【问题描述】:
在我的计算机组织课上,我们被分配了一个程序。我被困在一件事上。我将值 7FF 作为字符串,我需要将其转换为带符号的 int。我可以把它变成一个无符号整数。我得到的值是 2047。正确的值应该是 -1。
现在这是我所拥有的:
int x = Integer.parseInt("7FF", 16);
我试过用一个短的来投射它,但没有做任何事情。任何帮助,将不胜感激!谢谢。
编辑:所以我的主要问题是,如何使用十六进制字符串“7FF”生成 -1 的输出?
【问题讨论】:
-
Java 没有无符号整数。为什么它会返回-1?你问的不是很清楚。
-
@shmosel 我明白这一点。我们必须从文件中读取十六进制值。我们必须在程序中使用这些值,并且它们需要是有符号的值。因此,虽然我知道 java 没有该功能,但我正在尝试找到一种使其工作的方法。我需要它能够从该数字产生 -1。
-
Java 确实有带符号的值。而且您还没有解释为什么它会评估为 -1。
-
@KeenanKaufman 仅在 11 位机器上。
-
@KeenanKaufman 您说您尝试转换为
short,但short是16 位,而7FF作为short是0000 0111 1111 1111。因为第一位是0,所以它是一个正数。7FF成为-1的唯一方法是使用 11 位值(正如其他人提到的),您在任何地方都没有说明。如果您真的想将十六进制解析为 11 位有符号值,请编辑问题并澄清这一点,以便我们知道您想要使用模糊的 11 位值,而不仅仅是对符号位的位置感到困惑位于。
标签: java casting hex decimal signed