2016-02-25 57 views
-2

我試圖用十六進制表示緯度和經度。說我有一個緯度/經度設置像這樣:我是否正確地將我的負十進制經度轉換爲十六進制的Java?

28.418725,-81.581203

轉換(由千萬乘)以整數給出:

284187250,-815812030

轉換Java中的Latitude to Hex很容易:

Integer.toHexString(284187250); 

轉換負經度更困難。這是我有:

import java.lang.StringBuffer; 

public class ConvertNegativeLongitudeToHex { 
    public static void main(String[] args){ 
     int longitude = -815812030; 
     String longitude_in_binary = Integer.toBinaryString(longitude); 
     StringBuffer longitude_in_binary_buffer = new StringBuffer(longitude_in_binary); 
     String longitude_in_binary_reverse = longitude_in_binary_buffer.reverse().toString(); 
     int final_longitude_int = Integer.parseInt(longitude_in_binary_reverse, 2) + 1; 
     System.out.println(Integer.toHexString(final_longitude_int)); 
    } 
} 

就像我說的。我需要澄清,我已經做到了這一點。此外,如果有更好,更優雅的方式來實現這一點,我也希望聽到。

+1

它不完全清楚爲什麼你將其轉換成第一二元......但從根本上說,你期待什麼結果,而你得到什麼結果呢?如果你只是調用'Integer.toHexString(longitude)',會發生什麼? –

+0

這就是爲什麼我轉換成二進制第一:https://www.cs.cornell.edu/~tomf/notes/cps104/twoscomp.html – Brian

+0

我敢肯定還會有,無論你期待一個更簡單的方法要做的事情,但你還沒有告訴我們你在做什麼,或者你現在的代碼做了什麼。 –

回答

-1

對於這兩種,正值和負值就足夠用了 Integer.toHexString(number);

所有整型變量在Java中的簽名。 在這個問題上闡述瞭如何第二次補充工作2's complement hex number to decimal in java

我們需要看看下面的代碼:

public static void main(String[] args) { 
    int i1 = 1; 
    int i2 = -1; 

    System.out.println("Value 1"); 
    System.out.println(Integer.toHexString(i1)); 
    System.out.println(Integer.toBinaryString(i1)); 

    System.out.println("Value -1"); 
    System.out.println(Integer.toHexString(i2)); 
    System.out.println(Integer.toBinaryString(i2)); 
} 

它的輸出是:

Value 1 
1 
1 
Value -1 
ffffffff 
11111111111111111111111111111111 

我們可以代表值1作爲00000001和-1作爲ffffffff

相關問題