VB6支持无符号数据类型吗?

问题描述 投票:0回答:6

为了和一位同事打赌,我想知道VB6是否原生支持任何无符号数据类型。

我相信答案是“否”,但我似乎找不到任何官方文件证实这一点。一个指向 Microsoft 文档的简单链接就是一个可以接受的答案;关于为什么不支持此类类型的历史理由将是额外的好处。

vb6 unsigned
6个回答
9
投票

正如 Kris 所说,除

Byte
数据类型外,它们不受支持,该数据类型仅作为无符号可用,如以下数据类型列表所示:数据类型摘要

页面提到了VBA,但也提到了Visual Studio 6.0,支持的数据类型是相同的。

我认为您不会找到官方文档说明为什么他们不添加无符号数据类型,因为这通常是错误的方式,因为它可能不是“为什么我们不应该支持这个”的情况因为“是否值得付出额外的努力来添加这个”。

编辑提及 MarkJ 指出的

Byte
数据类型的例外情况。


2
投票

唯一的无符号整数类型是 Byte。


1
投票

可以选择将十六进制值传递到 Long 类型,只要符号位不是值的一部分,该类型就会存储为无符号。例如,

&HFFFF = -1 

but &HFFFF& = 65535 

请注意,这些 16 位值被传递为 Long 类型,即 32 位。所以符号位保持不变。但如果你需要 32 位,一个建议是使用 Double 类型,之前有人提到过。

考虑到一般情况下对无符号类型的需求,Unsigned Long 将是 32 位二进制,而 Byte 则只有 8 位。尝试通过串行端口使用字节类型写入 24 位寄存器..:) 我的看法是,在 VBA 中,符号位就像位逻辑中的碎片一样..

无论如何,我希望这对某人有帮助。

干杯,

马萨诸塞州诺伍德


0
投票

不支持。

有关模拟它们的一些好信息:http://www.vbforums.com/showthread.php?t=578430


0
投票

不支持 VB6,它是按照 VB.NET link 中的说明添加的。


0
投票

我在 github 上的代码可能有用:

github.com/RZulu54/VBA7_ULongLong

使用 VBA7(64/32 位 MsOffice)或 VB6(Visual Basic 6)模拟 ULongLong 64 位无符号整数

对于 32 位 MsOffice VBA 或 VB6,我们可以使用两个长整型 32 位有符号整数组合成新的数据类型 TBit64。 这需要基本位运算的函数,如 AND、OR、XOR、NOT。

对于 64 位 MsOffice VBA7,我们可以使用新的 64 位有符号整数数据类型 LongLong。 AND、OR、XOR、NOT 等基本位运算不需要额外的函数,可以直接使用。

两种变体可用的功能有: SetBit64、ClearBit64、ShiftLeft64、ShiftRight64、PopCnt64(设置的位数)、 Lsb64(最左边位的位置)、Rsb64(最左边位的位置)等等。

Ms-Excel 文件 VBA7.xlsm 展示了如何在 32/64 位 MsOffice 中使用这些函数。 对于 64 位 Excel,还有一个简单的国际象棋演示如何使用 64 位棋盘逻辑。

© www.soinside.com 2019 - 2024. All rights reserved.