我想將科學雙數轉換爲java中的十進制雙精度。我發送一個在X86(小端)機器上運行的服務器(用C++編碼)的值,並且在將數據發送到客戶機(在java上編碼)之前,我使用htonl,ntohl方法進行轉換。但是現在,我必須發送這個值,而不像LE那樣轉換爲BE。正在客戶端(java)端進行覆蓋。其他類型可以正確轉換,但雙重,這是不存在的。當客戶端收到雙精度型時,該值無法正確讀取。這是我的雙重轉換的Java代碼。雙重科學記數法在java中的十進制記數法
protected int readInt(InputStream stream) throws IOException {
int i0 = read(stream);
int i1 = read(stream);
int i2 = read(stream);
int i3 = read(stream);
int i=(i0 << 24) + (i1 << 16) + (i2 << 8) + (i3 << 0);
return i;
}
protected double readDouble(InputStream stream) throws IOException {
int i0 = readInt(stream);
int i1 = readInt(stream);
return Double.longBitsToDouble(((long)i0 << 32) + (i1 & 0xffffffffL));
}
經過所有這些步驟,我得到9.534475227E-315,如果我從服務器發送0.3。
感謝和問候。
你發現了什麼?你嘗試了什麼?請舉一個你喜歡做什麼的例子。 – tangens 2010-02-04 12:26:33
我有一個像9.534475227E-315的值,我想將其轉換爲0.3。爲什麼0.3?因爲我從服務器發送0.3到客戶端,當我從客戶端讀取這個值時,我得到了9.534475227E-315 – Aykut 2010-02-04 12:29:40
您需要提供更多關於如何嘗試轉換的信息 – Mark 2010-02-04 12:31:03