Converter Dari Hexadecimal ke Float Vb6 Posted: 07 Dec 2011 10:47 PM PST Mengingat posting saya sebelumnya dari float ke hex, nah sekarang saya ingin shared dari hex ke Float maupun sebaliknya, Option Explicit
Private Type TSingle Sng As Single End Type
Private Type TLong Lng As Long End Type
Public Function Long2Float(ByVal value As Long) As Single Dim s As TLong, d As TSingle s.Lng = value LSet d = s Long2Float = d.Sng End Function
Public Function Float2Long(ByVal value As Single) As Long Dim s As TSingle, d As TLong s.Sng = value LSet d = s Float2Long = d.Lng End Function
'~~~ All the functions and other things ends here '~~~ We are going to use it.
Private Sub Command1_Click() '~~~ On clicking the CommandButton '~~~ Declaring variables Dim sHex As String Dim Sng As Single Dim Lng As Long '~~~ Sample HEX string sHex = "&H3F8CCCCD" '~~~ Converting it into Float Sng = Long2Float(sHex) MsgBox "Hex to Float: " & Sng '~~~ Displaying it '~~~ Converting it into Long Lng = Float2Long(Sng) MsgBox "Float to Long: " & Hex(Lng) '~~~ Displaying it End Sub
|
Merubah Bilangan Float Ke Hexadecimal Vb6 Posted: 07 Dec 2011 10:08 PM PST Mengerjakan TA sangatlah bikin pusing, tapi kepusingan tersebut menambah wawasan ternyata..ha...(menghibur Diri) Dalam tugas Akhir saya menggunakan Vb6 yang menggunakan perintah untuk merubah Bilangan Float Ke Hex, setelah cari - cari di forum akhirnya saya dapatkan dan saya ingin berbagi ilmu ke teman2 sekalian, meski belum bisa berbagi rejeki..he.. Option Explicit
Private Declare Function ArrPtr Lib "msvbvm60" Alias "VarPtr" (Arr() As Any) As Long Private Declare Sub PutMem4 Lib "msvbvm60" (ByVal Ptr As Long, ByVal Value As Long) Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _ (pDst As Any, pSrc As Any, ByVal ByteLen As Long)
Public Function CastSingleAsLong(Arr() As Single) As Long() PutMem4 ArrPtr(CastSingleAsLong), Not Not Arr Debug.Assert App.hInstance PutMem4 ArrPtr(Arr), 0 End Function
Private Sub Command1_Click() Dim lngArray() As Long, sngArray() As Single
' some sample data... ReDim sngArray(0 To 2) sngArray(0) = 1.1 sngArray(1) = 2.2 sngArray(2) = 3.3
' then do casting lngArray = CastSingleAsLong(sngArray) ' = sngArray is now uninitialized array, lngArray contains everything sngArray had
' show the contents of ex-sngArray Text1.Text = Hex$(lngArray(0)) Text2.Text = Hex$(lngArray(1)) End Sub
Private Sub Command2_Click() Dim b(1 To 4) As Byte b(1) = CInt("&H" & "3F") b(2) = CInt("&H" & "8C") b(3) = CInt("&H" & "CC") b(4) = CInt("&H" & "CD") Dim fp As Single Call CopyMemory(fp, b(1), 4) Text3.Text = fp End Sub |
0 comments:
Post a Comment