【发布时间】:2026-01-27 06:20:04
【问题描述】:
我正在尝试使用 SByte 数据类型定义一个枚举(用于带有一些随附固件的二进制互操作)。我有如下内容:
Public Enum Codes AS SByte
IDLE = &H0
IN_PROGRESS = &H1
DONE = &H2
SOME_ERROR = &H80
SOME_OTHER_ERROR = &H81
End Enum
很遗憾,这两个错误代码会导致编译时错误:“常量表达式在 'SByte' 类型中不可表示。”
显然它试图首先将这些值视为整数,然后将它们转换为 SByte。作为一个整数 0x80 = 128。由于一个 SByte 的范围是 [-128, 127],这个值对于一个 SByte 来说太大了。
如果我使用 -(&H80) 就可以解决。但是,这不适用于 -&H81,因为这会转换为 -(129) 而不是 -127....
我可以只使用这些数字的十进制表示来解决这个问题,但我更喜欢使用十六进制(即使带有 VB 可怕的前缀),因为这与底层汇编代码一致。
所以...如果有人知道使用十六进制的负 SByte 值的正确语法,我将不胜感激!
【问题讨论】: