UInt32到Int32

2 vb.net overflow

如果我有一个返回Int32的VB.Net函数,但使用unsigned int(UInt32)进行计算等.如何将值为"3392918397"的变量"MyUintVar32"转换为VB.Net中的标准Int32 ?

在c#中,如果我只是执行"return(int)(MyUintVar32);",我得到-902048899,而不是错误.

我尝试了几种不同的方法.与VB.Net相比,c#处理这些转换的方式有何不同?

use*_*979 7

我意识到这是一个老帖子,但问题没有得到解答.我想知道的其他人:

Dim myUInt32 As UInt32 = 3392918397  
Dim myInt32 As Int32 = Convert.ToInt32(myUInt32.ToString("X"), 16)  
Run Code Online (Sandbox Code Playgroud)

反向操作:

myUInt32 = Convert.ToUInt32(myInt32.ToString("X"), 16)
Run Code Online (Sandbox Code Playgroud)

此外,可以创建一个联合结构,以便在Int32和UInt32之间轻松转换:

Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Explicit)> _    
  Public Structure UnionInt32  
  <FieldOffset(0)> _  
  Public IntValue As Int32  
  <FieldOffset(0)> _  
  Public UIntValue As UInt32  
End Structure  

Dim MyUnionInt32 as UnionInt32  
MyUnionInt32.UIntValue = 3392918397  
Dim IntVal as Int32 = MyUnionInt32.UIntValue  '= -902048899 
Run Code Online (Sandbox Code Playgroud)

反向操作:

MyUnionInt32.IntValue = -902048000  
Dim UIntVal as UInt32 = MyUnionInt32.UIntValue  '= 3392919296  
Run Code Online (Sandbox Code Playgroud)

干杯,TENware