I want to cast an Int32 value to Int16 value. Data lost when casting is not a problem to me. But a System.OverflowException
says the Int16 type value is too large or too small.
Dim num As Int32 = &HFFFFFFF
Dim num2 As Int16 = Convert.ToInt16(num)
Debug.WriteLine(num.ToString("X4"))
Debug.WriteLine(num2.ToString("X4"))
If I want to cast an Int32 &HFFFFFFF to &HFFFF so what should I do.
Any help would be appreciated.
I think, as I said in my comment, that your casting is invalid because int16 has maxValue
and MinValue
which your int32 obviously does not sit in between.
Try the following to see your error more clearly:
Debug.WriteLine(Int16.MaxValue.ToString)
Debug.WriteLine(Int16.MinValue.ToString)
Debug.WriteLine(num.ToString)
Your best workaround is to trim the last 4 F off your int32 whenever converting, if you still insist on doing it:
Sub Main()
Dim num As Int32 = &HFFFFFFF
Dim num2 As Int16 = Convert.ToInt16(num.ToString("X8").Substring(num.ToString("X8").Length - 4, 4), 16)
Debug.WriteLine(num.ToString("X4"))
Debug.WriteLine(num2.ToString("X4"))
Console.ReadLine()
End Sub