【发布时间】:2014-09-12 13:13:47
【问题描述】:
public String getLatitude(String hex) {
int latStart=0;
String str09 = hex.substring(latStart,latStart+8);
System.out.println("latitude Hex::"+str09);
Integer outDec = Integer.parseInt(str09, 16);
double d = outDec / new Double(1000);
System.out.println("Hex to float>>>" + d);
double lat = d /`enter code here` 3600;
return String.valueOf(lat);
}
public String getLongitude(String hex) throws Exception {
int lonStart=8;
String str09 = hex.substring(lonStart,lonStart+8);
System.out.println("Longitude Hex::"+str09);
Integer outDec = Integer.parseInt(str09,16);
double d = outDec / new Double(1000);
System.out.println("Hex to float>>>" + asHex);
double lon = d / 3600;
return String.valueOf(lon);
}
十六进制字符串 -->090bc3b3ed1b479c
我正在尝试将其转换为纬度和经度。实际输出为 纬度 Hex::090bc3b3 纬度:::42.157205277777784
十六进制经度::ed1b479c 经度:::-88.04980555555555
当我尝试转换为整数值时,我得到了 NumberFormatException。这是我正在处理的代码:
我正在将经度十六进制字符串转换为整数时遇到异常。
public String getLongitude(String hex) throws Exception {
int lonStart=8;
String str09 = hex.substring(lonStart,lonStart+8);
System.out.println("latitude Hex::"+str09);
System.out.println("Longitude Hex::"+str09);
Long outDec = Long.parseLong(str09, 16);
double d = outDec / new Double(1000);
System.out.println("Hex to float>>>" + d);
double lon = d / 3600;
return String.valueOf(lon);
}
我也尝试过 Long 但这是我得到的:longitude:::1104.9966655555554
【问题讨论】:
-
为什么你的论点在第二个
getLongiture方法中被命名为base64?你用的是base64编码吗? -
我将输入作为 base 64 字符串转换为十六进制字符串。我在编码之前和解码 base64 之后比较了十六进制字符串,看起来不错。但问题在于将十六进制字符串转换为有符号十进制值。我现在已将变量名称更改为十六进制。
标签: java latitude-longitude numberformatexception