2009-10-22 49 views
0

我要打包和解包從/ 16位的詮釋成USHORT在VB.net位包的Int16成USHORT VB.net

這是我想我能做到這一點(不工作,給我溢出異常)

'Pack Int16 into ushort ' 
Dim usPacked = CType(Data, UShort) 

'unpack Int16 from ushort ' 
Dim unpacked = CType(data,Int16) 

謝謝!

回答

0

編輯:Jared's answer比這個礦:(

  • UShort可以存儲從整數0到65,535的更好
  • Short可以通過存儲32,767 -32,768整數
  • Long可以存儲。整數從約20億到20億

你會得到一個overflow當您嘗試將負數放入UShort時,或者您嘗試將數字超過32,767時放入Short中。一個解決方案是使用Long作爲中介。

1

您可以使用舊的聯盟解決方案

<StructLayout(Runtime.InteropServices.LayoutKind.Explicit)> _ 
Structure s1 
    <FieldOffset(0)> Public AsShort As Short 
    <FieldOffset(0)> Public AsUShort As UShort 
End Structure 

Dim v1 = GetTheShortValue() 
Dim v2 = new s1 
v2.AsShort = v1 
Dim v3 As UShort = v2.AsUShort