用VB.NET十六进制跟踪&符号?

时间:2011-07-22 08:47:47

标签: vb.net hex

对于人们来说,这应该是一个简单的方法。除了连接到一个简介的内容农场之外,谷歌什么也没有,而且用英语写成。所以,让我们在这里清理它,它将永远被埋葬。

VB十六进制数字的尾随&符号是什么?我已经读过它强制转换为Int32,因为VB想要尝试存储为Int16。这对我来说很有意义。但是我从模糊中得不到的部分是始终使用尾随符号用于位掩码,标志,枚举等。显然,它与覆盖VB的内部使用带符号数字的迷信有关,这可能导致比较奇怪的结果。

所以为了得到简单的点,VB.Net十六进制数的规则是什么,有和没有尾随的&符号?请在bitmasks / flags等情况下包括具体用法,以及如何使用它来强制签名与未签名。

没有C#请:)

2 个答案:

答案 0 :(得分:2)

除非将类型明确指定为UInt32,Int64或UInt64,否则Vb.net会将0x80000000-0xFFFFFFFF范围内的“& h” - 注释十六进制常量视为负数。如果数字在“&”之后用正好八位数写入,这种行为可能是可以理解的,但由于某些原因我无法理解,即使数字是用前导零写的, vb.net也会表现出来。在VB的当前版本中,可以通过使用后缀“&”强制正确评估数字。后缀(Int64),“L”(Int64),“UL”(UInt64)或“UI”(UInt32)。在早期版本的VB中,“问题范围”是0x8000-0xFFFF,并且强制正确评估该范围内的数字的唯一方法(作为32位整数,然后称为“长”)是一个尾随符号

答案 1 :(得分:1)

Visual Basic具有Type Characters的概念。这些可以用来修改变量声明和文字,虽然我不建议在变量声明中使用它们 - 大多数开发人员现在更熟悉As。例如。以下声明是等效的:

Dim X&
Dim X As Long

但就个人而言,我发现第二个更具可读性。如果我看到第一个,我实际上必须访问上面的链接,或者使用Intellisense来计算变量是什么(如果查看纸上的代码,那就不好了)。