#Region "Object"
Dim WithEvents tmr1 As System.Timers.Timer
Dim WithEvents tmr2 As System.Timers.Timer
Dim WithEvents tmr3 As System.Timers.Timer
Dim WithEvents tmr4 As System.Timers.Timer
Dim WithEvents tmr5 As System.Timers.Timer
#End Region
#Region "Variables"
Dim Cnt As Long
#End Region
#Region "Unions"
<StructLayout(LayoutKind.Explicit)>
Public Structure Un32
<FieldOffset(0)> Dim Byte0 As Byte
<FieldOffset(1)> Dim Byte1 As Byte
<FieldOffset(2)> Dim Byte2 As Byte
<FieldOffset(3)> Dim Byte3 As Byte
<FieldOffset(0)> Dim Short0 As Int16
<FieldOffset(2)> Dim Short1 As Int16
<FieldOffset(0)> Dim uShrt0 As UInt16
<FieldOffset(2)> Dim uShrt1 As UInt16
<FieldOffset(0)> Dim Word0 As Int32
<FieldOffset(0)> Dim uWord0 As UInt32
<FieldOffset(0)> Dim Sng0 As Single
End Structure
<StructLayout(LayoutKind.Explicit)>
Public Structure Interdatos
<FieldOffset(0)> Dim Byte0 As Byte
<FieldOffset(1)> Dim Byte1 As Byte
<FieldOffset(2)> Dim Byte2 As Byte
<FieldOffset(3)> Dim Byte3 As Byte
<FieldOffset(4)> Dim Byte4 As Byte
<FieldOffset(5)> Dim Byte5 As Byte
<FieldOffset(6)> Dim Byte6 As Byte
<FieldOffset(7)> Dim Byte7 As Byte
<FieldOffset(0)> Shared B(7) As Byte
<FieldOffset(0)> Dim Short0 As Int16
<FieldOffset(2)> Dim Short1 As Int16
<FieldOffset(4)> Dim Short2 As Int16
<FieldOffset(6)> Dim Short3 As Int16
<FieldOffset(0)> Dim uShrt0 As UInt16
<FieldOffset(2)> Dim uShrt1 As UInt16
<FieldOffset(4)> Dim uShrt2 As UInt16
<FieldOffset(6)> Dim uShrt3 As UInt16
<FieldOffset(0)> Dim Word0 As Int32
<FieldOffset(4)> Dim Word1 As Int32
<FieldOffset(0)> Dim uWord0 As UInt32
<FieldOffset(4)> Dim uWord1 As UInt32
<FieldOffset(0)> Dim Sng0 As Single
<FieldOffset(4)> Dim Sng1 As Single
<FieldOffset(0)> Dim Lng As Int64
<FieldOffset(0)> Dim uLng As UInt64
<FieldOffset(0)> Dim Doble As Double
End Structure
#End Region
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
tmr1 = New Timers.Timer
tmr1.Interval = 1000
tmr1.AutoReset = False
tmr2 = New Timers.Timer
tmr2.Interval = 1000
tmr2.AutoReset = False
tmr3 = New Timers.Timer
tmr3.Interval = 1000
tmr3.AutoReset = False
tmr4 = New Timers.Timer
tmr4.Interval = 1000
tmr4.AutoReset = False
tmr5 = New Timers.Timer
tmr5.Interval = 1000
tmr5.AutoReset = False
End Sub
Private Sub cmdStart_Click(sender As Object, e As EventArgs) Handles cmdStart.Click
Dim Value As String
Dim i32 As Int32
Dim i33 As Int32
Dim ui32 As UInt32
Dim ui33 As UInt32
Dim i64 As Int64
Dim u32 As Un32
Dim u64 As Interdatos
' Convet to unsigned integer
Cnt = 0
While tmr1.Enabled
u32.uWord0 = CUInt(Value)
i32 = u32.Word0
Cnt += 1
End While
lbU32.Text = Cnt.ToString
lbU32.Update()
' Convert through a short union
Cnt = 0
tmr2.Start()
While tmr2.Enabled
u64.uWord0 = CUInt(Value)
i32 = u64.Word0
Cnt += 1
End While
lbU64.Text = Cnt.ToString
lbU64.Update()
' Convert through a long union
Cnt = 0
tmr3.Start()
While tmr3.Enabled
ui32 = CUInt(Value)
ui33 = ui32
Cnt += 1
End While
lbCUInt32.Text = Cnt.ToString
lbCUInt32.Update()
' Convert Val()
Cnt = 0
tmr4.Start()
While tmr4.Enabled
i32 = CInt(Val(Value))
i33 = i32
Cnt += 1
End While
lbVal.Text = Cnt.ToString
lbVal.Update()
' Convert implicit
Cnt = 0
tmr5.Start()
While tmr5.Enabled
ui32 = Value
ui33 = ui32
Cnt += 1
End While
lbImpl.Text = Cnt.ToString
lbImpl.Update()
Me.Cursor = Cursors.Default
cmdStart.Enabled = True
End Sub
End Class
Fuentes de Información
El contenido del post es de mi autoría, y/o, es un recopilación de distintas fuentes.
2 comentarios