表示 VB 中十六进制数的所有位
Represent all bits of hexadecimal number in VB
在 C# 中,以下工作:
UInt32 MyUInt32 = 0xFFFFFFFF;
UInt64 MyUInt64 = 0xFFFFFFFFFFFFFFFF;
但是等效的 VB 会产生错误 BC30439: Constant expression not representable in type 'ULong'
:
Dim MyUInt32 As UInt32 = &HFFFFFFFF ' Error BC30439
Dim MyUInt64 As UInt64 = &HFFFFFFFFFFFFFFFF ' Also fails
将初始化值更改为可表示为带符号整数(即 Int32 或 Int64)的最大值有效:
Dim MyUInt32 As UInt32 = &H7FFFFFFF ' Works
Dim MyUInt64 As UInt64 = &H7FFFFFFFFFFFFFFF ' Also works
有什么方法可以得到 VB 中的最后一位(第 32 位或第 64 位)?
吉米很少回答;不知道为什么
Open up Project
-> Properties
-> Compile
, click the Advanced Compile Option
button and tick Remove integer overflow checks
. -- You have the same setting as C# now (which has the same option, but inverted).
如果他们post回答,评论我会删除这个one/that一个可以被接受
问题出在您的文字上。默认情况下,整数文字被视为有符号。如果你想要默认值以外的东西,那么(就像在其他语言中可能发生的那样)你可以告诉编译器。
正确的做法是:
Dim MyUInt32 As UInt32 = &HFFFFFFFFUI
Dim MyUInt64 As UInt64 = &HFFFFFFFFFFFFFFFFUL
注意常量末尾的“UI”和“UL”:它们告诉编译器它们应该分别被视为 unsigned int 和 unsigned long。
当你想要一个比默认值更短的常量时,更常见的是需要这样做,例如指定常量是 Single
或 Short
而不是 Double
或 Integer
.
(你可以争论,我可能不会不同意,在这种特定情况下,编译器应该识别你想要做什么并自动将文字更改为无符号,就像它自动将较长的文字视为Long
而不是 Integer
。)
在 C# 中,以下工作:
UInt32 MyUInt32 = 0xFFFFFFFF;
UInt64 MyUInt64 = 0xFFFFFFFFFFFFFFFF;
但是等效的 VB 会产生错误 BC30439: Constant expression not representable in type 'ULong'
:
Dim MyUInt32 As UInt32 = &HFFFFFFFF ' Error BC30439
Dim MyUInt64 As UInt64 = &HFFFFFFFFFFFFFFFF ' Also fails
将初始化值更改为可表示为带符号整数(即 Int32 或 Int64)的最大值有效:
Dim MyUInt32 As UInt32 = &H7FFFFFFF ' Works
Dim MyUInt64 As UInt64 = &H7FFFFFFFFFFFFFFF ' Also works
有什么方法可以得到 VB 中的最后一位(第 32 位或第 64 位)?
吉米很少回答;不知道为什么
Open up
Project
->Properties
->Compile
, click theAdvanced Compile Option
button and tickRemove integer overflow checks
. -- You have the same setting as C# now (which has the same option, but inverted).
如果他们post回答,评论我会删除这个one/that一个可以被接受
问题出在您的文字上。默认情况下,整数文字被视为有符号。如果你想要默认值以外的东西,那么(就像在其他语言中可能发生的那样)你可以告诉编译器。
正确的做法是:
Dim MyUInt32 As UInt32 = &HFFFFFFFFUI
Dim MyUInt64 As UInt64 = &HFFFFFFFFFFFFFFFFUL
注意常量末尾的“UI”和“UL”:它们告诉编译器它们应该分别被视为 unsigned int 和 unsigned long。
当你想要一个比默认值更短的常量时,更常见的是需要这样做,例如指定常量是 Single
或 Short
而不是 Double
或 Integer
.
(你可以争论,我可能不会不同意,在这种特定情况下,编译器应该识别你想要做什么并自动将文字更改为无符号,就像它自动将较长的文字视为Long
而不是 Integer
。)