从 ULong 转换为整数

Convert from ULong to Integer

我正在尝试将 ULONG 列表转换为整数数组。

问题是关于如何丢弃ULONG的MSB!我尝试了所有类型的操作,但所有操作都引发了 "Overflow Exception" 错误:

dim MyInteger as Integer = CInt(ULong_Number)     
dim MyInteger as Integer = Convert.ToInt32(ULong_Number)
dim MyInteger as Integer = Convert.ToUInt32(ULong_Number) 
dim MyInteger as Integer = ULong_Number xor &HFFFFFFFF00000000 xor &HFFFFFFFF00000000

我试图避免转换为临时字节数组,然后将每 4 个字节读入整数(如果列表很大,将近 200 万个数字)。

有没有人知道将此 ULONG 隐式转换为 INTEGER?

谢谢!

如果您确定 ULong_Number 的值不超过整数的最大值(2^31 - 1,或 &H7FFFFFFF),或者您想忽略任何高位(这这样做会很奇怪,但是你 试图将一个 8 字节的数字放入 4 个字节),你可以使用这个。

Dim MyInteger As Integer = CInt(ULong_Number And CULng(&H000000007FFFFFFF))