负int到十六进制转换

时间:2016-05-17 21:55:25

标签: java

我正在将一些整数转换为十六进制,但我遇到的问题是当我传递一个负值将其转换为十六进制时。

示例:

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”

感谢任何帮助。

1 个答案:

答案 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,因为角度为十分之一度。