如何在Visual basic.net中对有符号整数进行零扩展



例如,我想将&H80000000分配给64位有符号整数变量:

Dim a As Long = &H80000000

但是,整数a的值是&HFFFFFFFF80000000,而不是&H80000000
我试图调用CULng来绕过符号扩展。尽管如此,它还是说"常量表达式在类型'ULong'中不可表示"。我猜想这是因为Visual Basic禁止将负整数赋值给无符号变量。

我使用的是Visual Basic 2010。. NET Framework 4.0)

Dim a As Long = &H80000000L

使用字面值后缀L告诉编译器您希望该值为长字面值。否则,它将被解释为表示负值的有符号整数字面值(-2147483648)。或者,您可以使用后缀UI来表示无符号整数。

示例代码:

Dim a As Long = &H80000000      ' Int32 literal -2147483648
Dim b As Long = &H80000000L     ' Int64 literal  2147483648
Dim c As Long = &H80000000UI    ' UInt32 literal 2147483648
Console.WriteLine(a.ToString("X")) ' FFFFFFFF80000000
Console.WriteLine(b.ToString("X")) ' 80000000
Console.WriteLine(c.ToString("X")) ' 80000000

相关内容

  • 没有找到相关文章

最新更新