如何在ULong上按位操作设置大常量?

时间:2010-03-01 16:58:11

标签: vb.net bit-manipulation

这很好用:

Public Const test As ULong = 1 << 30

这不能很好地运作:

Public Const test As ULong = 1 << 31

它会产生此错误:

  

常量表达式在'ULong'

类型中无法表示

如何让它发挥作用?

这确实有效:

Public Const test As Long = 1 << 31

但我必须使用 ULong

2 个答案:

答案 0 :(得分:5)

您不能使用Long数据类型转移1 << 31,因此会出现此错误。

但是,这是因为1作为整数文字被视为Int32,它是默认的整数文字。

你应该通过将其定义为:

来解决这个问题
Public Const test As ULong = 1UL << 30
Public Const test2 As ULong = 1UL << 31

UL标志表示将1设为无符号长。 See Type characters for details

答案 1 :(得分:3)

尝试以下方法:

Public Const test As ULong = 1UL << 31 

您需要明确告诉编译器您正在ULong进行操作。

C#等效作品:

public const ulong test  = 1UL << 31;