我有一个字符串格式的十六进制值“FF30”。我需要这个数字的二进制补码值。我现在正在做,首先将它转换为二进制然后取2的补码。这有任何简单的方法。
答案 0 :(得分:1)
您是否需要将 2的补码操作应用于此值,或者您是否需要将其解释为2的补码?如果是后者,则跳过下面的第二行代码。
我认为这对你有用。
int val = Integer.parseInt("FF30", 16);
int result = (~val) + 1;
<强>更新强>
由于您在评论中暗示您希望将结果转换回字符串,因此调用&#34; toHexString&#34;这是一个简单的问题。并切断任何带前缀的填充位
String hex = "FF30";
int length = hex.length();
long value = Long.parseLong(hex, 16); // convert hex string to long
long result = (~value) + 1; // compute the 2's complement
// convert the result value back to a hex string (keeping the same length and dropping any sign-extension bits)
String resultAsString = Long.toHexString(result);
// chop off the prefix of the string so the result is the same length as the input
int newLength = resultAsString.length();
if (newLength > length)
{
resultAsString = resultAsString.substring(newLength-length);
}
System.out.print(resultAsString);