首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Const Long翻译问题?&H99FF与Visual Basic 6.0

Const Long翻译问题?&H99FF与Visual Basic 6.0
EN

Stack Overflow用户
提问于 2015-01-27 11:21:13
回答 3查看 592关注 0票数 0

我已经准备好在'w‘下为tWilight专区怪异提交这篇文章!

我有一个用户控件类,并在定义中包含以下内容

代码语言:javascript
复制
Private Const m_def_FillColor As Long = &H99FF   

然后:

代码语言:javascript
复制
Private Sub UserControl_InitProperties()
    m_FillColor = m_def_FillColor

现在,如果我在“即时”窗口中进行调查:

代码语言:javascript
复制
? m_def_FillColor
-26113 

我想是的。好的。这可能就是为什么当我尝试使用它作为颜色时出现错误的原因。我检查十六进制值并得到:

代码语言:javascript
复制
? hex( m_def_FillColor )
FFFF99FF

很奇怪,对吧?

因此,我在即时窗口中检查了&h99ff的值:

代码语言:javascript
复制
? &h99ff
-26113 

嗯..。很奇怪,对吧?

我尝试强制强制转换,并明确表示转换:

代码语言:javascript
复制
? clng( &h000099ff )
-26113 

为了“傻笑”,我在这两者之间做了一个转换:

代码语言:javascript
复制
? hex( clng( &h000099ff ) )
FFFF99FF

只是为了好玩,我检查了一个未转换的演员:

代码语言:javascript
复制
? hex( &h000099ff )
99FF

别买了,以防万一。我想,我要看看实际的十进制值是怎么回事:

代码语言:javascript
复制
? hex( clng( 39423 ) )
99FF

无论如何。我晚上关机,我想我的记忆有问题,只需要重新启动,我已经尝试重新启动项目,所以这不是问题所在。

无论如何,有没有人见过这样的问题?

我希望重启和睡个好觉就能治好它..

但是..。我是不是在做一些明显的和/或无知的事情,完全遗漏了什么?

我的目标是将值&h000099ff插入到一个长值中。我对Visual Basic编程很在行,这是我已经做过数十亿次的事情,所以我只想确保我没有遗漏一些显而易见的东西!

晚上好,提前感谢你的帮助..奇怪..。

我认为是记忆问题造成的。但还是不确定。

EN

回答 3

Stack Overflow用户

发布于 2015-01-27 17:22:34

在数字末尾添加一个&

代码语言:javascript
复制
'1 form with:
'  1 command button : name=Command1
Option Explicit

Private Const A As Long = &H99FF
Private Const B As Long = &H99FF&

Private Sub Command1_Click()
  Print "A : " & CStr(A)
  Print "B : " & CStr(B)
End Sub
票数 3
EN

Stack Overflow用户

发布于 2019-05-16 08:31:27

您的问题是由于缺乏对2的补码整数格式的理解,该格式用于在现代计算机上存储整数。

请阅读Two's_complement,特别是关于标志扩展的部分。

VB只有带符号的整数变量,因此指定&H99FF被解释为16位有符号的2的补码整数,并且因为设置了最高有效位,所以它表示一个负数,十进制-26113。要将其转换为长整型(32位)并获得相同的有符号整数值,必须将其符号扩展为-26113的32位2的补码表示&HFFFF99FF

向常量添加尾随的&告诉VB &H99FF&已经是一个长(32位)值,因此在分配给一个长变量时不需要任何符号扩展转换。

票数 0
EN

Stack Overflow用户

发布于 2015-01-27 16:53:56

大多数编程语言只有带符号整数的概念。

只需给它赋值&h000099ff,它就会工作。但如果你读了它,它将被视为签名。

你调用的函数只关心比特,而不是VB6如何解释它们。

为什么要把常量赋给一个变量呢?常量和字符串字面量(它们的结尾是一样的)很快。

此外,对于颜色来说,这似乎是一个有趣的值。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28162693

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档