从ULong转换为整数
问题描述:
我试图将ULONG列表转换为整数数组。从ULong转换为整数
该问题与如何丢弃ULONG的MSB有关!我曾尝试各种操作,和所有的人都养的“溢出异常”错误:
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个字节到整数(LIST如果巨大,接近200万个数字)。
有没有人有任何想法隐式将此ULONG转换为INTEGER?
谢谢!
答
如果您确定ULong_Number
的值不超过整数的最大值(2^31 - 1或& H7FFFFFFF),或者您想要忽略任何更高位(这将是一个奇数要做的事情,但你是试图适应一个8字节的数字到4个字节),你可以使用这个。
Dim MyInteger As Integer = CInt(ULong_Number And CULng(&H000000007FFFFFFF))
你能举一个你期待的结果吗? – Shar1er80
我期望的是每个64位数的最后32位部分。甚至可以将其转换为UINT16或UINT32,即使将其四舍五入。 –