Java 字符串十六进制到十进制整数/正转负
我是一个编程新手,所以请友善一点:) 我刚刚编写了一个程序,将十六进制字符串转换为dec int。我用“负”十六进制进行了测试,有些值是正确的,有些值是错误的。我不能用错误的输出解决问题 这是我的代码:Java 字符串十六进制到十进制整数/正转负,java,string,hex,decimal,Java,String,Hex,Decimal,我是一个编程新手,所以请友善一点:) 我刚刚编写了一个程序,将十六进制字符串转换为dec int。我用“负”十六进制进行了测试,有些值是正确的,有些值是错误的。我不能用错误的输出解决问题 这是我的代码: String abc = "0123456789ABCDEF"; String hexString = "-ffad"; int decResult = 0; //int endRes = 0; hexString = hexString.toUpper
String abc = "0123456789ABCDEF";
String hexString = "-ffad";
int decResult = 0;
//int endRes = 0;
hexString = hexString.toUpperCase();
for(int i = 0; i < hexString.length(); i++)
{
if(hexString.contains("-"))
{
hexString = hexString.replace("-", "");
char res = hexString.charAt(i);
int d = abc.indexOf(res);
decResult = (16*decResult + d)*(-1);
}
else
{
char res = hexString.charAt(i);
int d = abc.indexOf(res);
decResult = ((16*decResult) + d)*1;
}
}
System.out.println(decResult);
String abc=“0123456789ABCDEF”;
字符串hexString=“-ffad”;
int decResult=0;
//int-endRes=0;
hexString=hexString.toUpperCase();
对于(int i=0;i
既然您正在这样做
if(hexString.contains("-"))
对于hexString字符串中的每个字符,转换的最终符号将计算为
- 如果hexString.length()为奇数,则为负
- 否则是肯定的李>
hexString = hexString.toUpperCase();
int sign = hexString.charAt(0) == '-' ? -1 : 1;
hexString = hexString.replace("-", "");
decResult = Integer.parseInt(hexString, 16) * sign;
System.out.println(decResult);
hexString.replace(“-”,”)
仍然是一个不必要地处理所有字符的操作(并导致某些格式错误的输入保持不被注意)。如果(sign)hexString=hexString.substring(1),则应该是代码>。但是,当然,如果您要使用Integer.parseInt(hexString,16)
无论如何,无论是大写转换还是负号的特殊处理,都没有任何意义,因为Integer.parseInt(“-ffad”,16)
已经完成了这项工作。