討論區快速選單
知識庫快速選單
掌握Salesforce雲端管理秘訣 網路投保旅行平安險
[ 回上頁 ] [ 討論區發言規則 ]
和 java 交換 double 的問題
更改我的閱讀文章字型大小
作者 : kuolung(kuolung)
[ 貼文 151 | 人氣 1414 | 評價 130 | 評價/貼文 0.86 | 送出評價 39 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2016/5/13 下午 06:16:08
作者 : kuolung(kuolung)
[ 貼文 151 | 人氣 1414 | 評價 130 | 評價/貼文 0.86 | 送出評價 39 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2016/5/13 下午 06:22:56
剛剛不小心按到傳出,補上內容

我已經用 java socket 和 winsock2 的方式,把兩個程式,正常連結,
可以傳送 byte string , int , long 而且轉換正常,
但是 double 就沒有辦法,請問, java 和 vc++ 問的 double 如何轉換
作者 : sflam(Raymond)討論區板主 Visual C++ .NET卓越專家VC++一代宗師新手入門優秀好手資訊類作業求救頂尖高手C++一代宗師貼文超過4000則
[ 貼文 4945 | 人氣 9172 | 評價 32290 | 評價/貼文 6.53 | 送出評價 142 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人kuolung註記此篇回應為最佳解答 2016/5/13 下午 10:57:07
>但是 double 就沒有辦法,請問, java 和 vc++ 問的 double 如何轉換

Java 跟 VC++ 的 double 應該都是用 64-bit IEEE 754 來代表, 所以可以用 bytes array 來傳送. 如果你是用這方法, 那就是 endian 或 byte order 的問題.

http://stackoverflow.com/questions/4949144/how-to-byteswap-a-double

作者 : ozzy123(ozzy) VC++優秀好手資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4498 | 人氣 37262 | 評價 11100 | 評價/貼文 2.47 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人kuolung註記此篇回應為很有道理 2016/5/17 上午 10:48:42
To understand the format of double type number in Java and vc++ and then make/design an algorithm to convert them.

https://en.wikipedia.org/wiki/double-precision_floating-point_format - IEEE standard
作者 : ozzy123(ozzy) VC++優秀好手資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4498 | 人氣 37262 | 評價 11100 | 評價/貼文 2.47 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人kuolung註記此篇回應為很有道理 2016/5/17 上午 11:09:36
http://web.mit.edu/hyperbook/Patrikalakis-Maekawa-Cho/node47.html
作者 : kuolung(kuolung)
[ 貼文 151 | 人氣 1414 | 評價 130 | 評價/貼文 0.86 | 送出評價 39 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2016/5/19 上午 08:21:16
沒錯,確定是 byte order 的問題

只是您給的這文章,我看不太懂,
我在 java 那邊找到一個可以直接 VC++ 用的方式
程式如下

protected void writeF(final double org) {
final long value = double.doubleToRawLongBits(org);
_out.write((int) (value & 0xff));
_out.write((int) (value >> 8 & 0xff));
_out.write((int) (value >> 16 & 0xff));
_out.write((int) (value >> 24 & 0xff));
_out.write((int) (value >> 32 & 0xff));
_out.write((int) (value >> 40 & 0xff));
_out.write((int) (value >> 48 & 0xff));
_out.write((int) (value >> 56 & 0xff));
}

雖然程式看起來有一點笨,但是直接傳過去 vc++ 就可以直接用,不用再轉換,給大家參考
作者 : ozzy123(ozzy) VC++優秀好手資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4498 | 人氣 37262 | 評價 11100 | 評價/貼文 2.47 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2016/5/19 上午 11:48:10
http://www.drdobbs.com/portable-byte-ordering-in-c/184402969
 板主 : 青衫 , Raymond
 > Visual C++ - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - Visual C++ - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
Visual C++
1 青衫 11070 
2 Raymond 10090 
3 Clier 7630 
4 小約翰 2500 
5 Cog 2030 
6 coco 1870 
7 aming 1410 
8 牧童哥 1400 
9 r2109 1380 
10 Akira 1350 
Visual C++
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2019 程式設計俱樂部 http://www.programmer-club.com.tw/
0.1396484