討論區快速選單
知識庫快速選單
想要資料分析就學Python 最紅的App開發語言:Kotlin 政府補助!學嵌入式+物聯網
[ 回上頁 ] [ 討論區發言規則 ]
8 byte 轉成 double 型態
更改我的閱讀文章字型大小
作者 : ktc(ktc) 人氣指數超過10000點
[ 貼文 83 | 人氣 10766 | 評價 60 | 評價/貼文 0.72 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2016/12/14 下午 07:24:46
vb6 如何將 8 byte 轉成 double 型態
謝謝
作者 : ozzy123(ozzy) 資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4466 | 人氣 37262 | 評價 10860 | 評價/貼文 2.43 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2016/12/15 上午 08:01:58
https://msdn.microsoft.com/zh-tw/library/4x2877xb.aspx
作者 : ma_hty(白老鼠(Gary))討論區板主 OpenGL卓越專家DirectX優秀好手C++頂尖高手貼文超過2000則人氣指數超過70000點
[ 貼文 2161 | 人氣 89850 | 評價 10090 | 評價/貼文 4.67 | 送出評價 78 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2016/12/15 上午 09:40:15

>vb6 如何將 8 byte 轉成 double 型態
>謝謝

你這問題問得太粗糙了一點. 做 byte array 轉換, 你需要考慮 Endian. 試試這樣...

[code]
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (ByRef Destination As Any, ByRef Source As Any, ByVal Length As Long)

Private Sub Form_Load()
Dim a As Double
Dim b(8) As Byte
Dim c As Double

a = -123.456
c = 0

CopyMemory b(0), a, Len(a)
CopyMemory c, b(0), Len(c)


Dim msg As String
msg = "a = " + CStr(a) + vbCrLf
msg = msg + "b = "
For i = 0 To 7
msg = msg + CStr(b(i)) + ", "
Next
msg = msg + vbCrLf
msg = msg + "c = " + CStr(c) + vbCrLf
MsgBox msg

End Sub
[/code]

不過, 為啥要用到 vb6 這麼舊? 改用 vb.net 的話, 已有 內建轉換的功能 可用.
作者 : ma_hty(白老鼠(Gary))討論區板主 OpenGL卓越專家DirectX優秀好手C++頂尖高手貼文超過2000則人氣指數超過70000點
[ 貼文 2161 | 人氣 89850 | 評價 10090 | 評價/貼文 4.67 | 送出評價 78 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2016/12/15 上午 09:40:25

>vb6 如何將 8 byte 轉成 double 型態
>謝謝

你這問題問得太粗糙了一點. 做 byte array 轉換, 你需要考慮 Endian. 試試這樣...

[code]
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (ByRef Destination As Any, ByRef Source As Any, ByVal Length As Long)

Private Sub Form_Load()
Dim a As Double
Dim b(8) As Byte
Dim c As Double

a = -123.456
c = 0

CopyMemory b(0), a, Len(a)
CopyMemory c, b(0), Len(c)


Dim msg As String
msg = "a = " + CStr(a) + vbCrLf
msg = msg + "b = "
For i = 0 To 7
msg = msg + CStr(b(i)) + ", "
Next
msg = msg + vbCrLf
msg = msg + "c = " + CStr(c) + vbCrLf
MsgBox msg

End Sub
[/code]

不過, 為啥要用到 vb6 這麼舊? 改用 vb.net 的話, 已有 內建轉換的功能 可用.
 板主 : 小樓
 > Visual Basic 6.0/VBA - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - Visual Basic 6.0/VBA - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
Visual Basic 6.0/VBA
1 阿戊 10670 
2 小樓 8650 
3 Jones 5270 
4 水瓶天賞 2340 
5 joe 2230 
6 史努比 1950 
7 阿呆紅 1440 
8 tt's 1250 
9 青衫 1150 
10 羅啟章 1020 
Visual Basic 6.0/VBA
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2018 程式設計俱樂部 http://www.programmer-club.com.tw/
0.140625