How can one modify the below code to output 16-bit Half instead of 64-bit Double?
Code:
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" ( _
Destination As Any, _
Source As Any, _
ByVal Length As Long _
)
Private Function DoubleToHEX(dnumber As Double) As String
Dim HexBytes(0 To 7) As Byte
Dim i As Integer
Dim x As String
CopyMemory HexBytes(0), dnumber, 8
x = ""
For i = 0 To 7
x = HEX00(HexBytes(i)) & x
Next i
DoubleToHEX = x
End Function
Private Function HEX00(bNumber As Byte) As String
Dim x As String
x = "0" & Hex(bNumber)
HEX00 = Right(x, 2)
End Function
Private Function HEXtoDouble(hNumber As String) As Double
Dim HexBytes(0 To 7) As Byte
Dim i As Integer
Dim x As String
If Len(hNumber) < 16 Then
MsgBox "Hex Value too big"
Exit Function
End If
For i = 0 To 7
HexBytes(i) = Val("&H" & Mid(hNumber, (8 - i) * 2 - 1, 2))
Next i
CopyMemory HEXtoDouble, HexBytes(0), 8
End Function