本文讨论的数据类型转换,并非传统意义上针对数值不变的数据类型转换,即不是说数据变换了类型后其值不变。
本文讨论的是数据类型转换后,其在寄存器保存的二进制数是一样的。
以Short和Ushort为例,short取值范围-32767 ~ + 32768,Ushort取值范围0 ~ 65536。
若在计算机寄存器内存储了“1011 0000 0100 0110”,这样一串二进制数
那么对于Ushort来说,数值是45126,而对于Short来说其值是 -20410
值得注意的是,负数在计算机中以补码形式存储的。
1. 添加必要的引用
Imports System.Runtime.InteropServices
2. 加入下述代码
<StructLayout(LayoutKind.Explicit)> _
Public Structure SHORT_USHORT
<FieldOffset(0)> Public ShortValue As Short
<FieldOffset(0)> Public UShortValue As UShort
<FieldOffset(0)> Public CharValue As Char
End Structure
3. 使用实例,下列代码放函数
Dim temp As SHORT_USHORT
temp.UShortValue = 45126
给temp的Ushort类型赋值45126,下面看看对应的Short值

已经转换完成。