gpt4 book ai didi

.net - VB中表示十六进制数的所有位

转载 作者:行者123 更新时间:2023-12-02 18:40:11 26 4
gpt4 key购买 nike

在 C# 中,以下工作有效:

UInt32 MyUInt32 = 0xFFFFFFFF;
UInt64 MyUInt64 = 0xFFFFFFFFFFFFFFFF;

但是等效的 VB 会生成错误 BC30439:常量表达式无法以“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 位)位吗?

最佳答案

问题出在你的文字上。默认情况下,整数文字被视为有符号。如果您想要默认值之外的其他内容,那么(就像其他语言中可能发生的那样)您可以告诉编译器。

正确的做法是:

Dim MyUInt32 As UInt32 = &HFFFFFFFFUI
Dim MyUInt64 As UInt64 = &HFFFFFFFFFFFFFFFFUL

注意常量末尾的“UI”和“UL”:它们告诉编译器它们应该分别被视为 unsigned int 和 unsigned long。

当您想要一个比默认常量更短的常量时,例如,更常见的是需要这样做指定常量是 SingleShort,而不是 DoubleInteger

(你可以争论,我可能不会不同意,在这种特定情况下,编译器应该识别你想要做什么并自动将文字更改为无符号,就像它自动将较长的文字视为 Long 而不是 Integer。)

关于.net - VB中表示十六进制数的所有位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68101066/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com