我正在将一些整数转换为十六进制,但我遇到的问题是当我传递一个负值将其转换为十六进制时。
示例:
String satpos = "13.0";
String satposs=satpos.replaceAll("\\.", "");
int satposition = Integer.parseInt(satposs);
String nids = Integer.toHexString(satposition);
String finished = nids+"0000";
在这种情况下,应用程序返回“820000”,这是我需要的正确值。 但如果我通过:
String satpos = "-7.0";
String satposs=satpos.replaceAll("\\.", "");
int satposition = Integer.parseInt(satposs);
String nids = Integer.toHexString(satposition);
String finished = nids+"0000";
应用程序返回“ffffffba0000”,但我应该得到“DCA0000”
感谢任何帮助。
答案 0 :(得分:2)
基于Andreas的评论,这是一个打印所需值的测试程序:
public class Test {
public static void main(String[] args) {
convert("13.0");
convert("-7.0");
}
private static void convert(String satpos) {
String satposs = satpos.replaceAll("\\.", "");
int satposition = Integer.parseInt(satposs);
if (satposition < 0) {
satposition += 3600;
}
String nids = Integer.toHexString(satposition);
String finished = nids + "0000";
System.out.println(finished);
}
}
如果角度为负,则添加3600,因为角度为十分之一度。