我从串口读取字节,但我需要将它们转换为带符号的8位整数(SByte)。不幸的是,Visual Basic中的溢出检查防止字节值255在SByte中变为-1。所以,基本上,我想做以下事情:
uint8_t a = 255;
int8_t b = (int8_t)a; // b == -1
如何在Visual Basic中执行此操作?
答案 0 :(得分:2)
我可以使用IIf在Visual Basic中手动执行此操作,如下所示:
Dim a as Byte = 255
Dim b as SByte = IIf(a < 128, a, a - 256)
答案 1 :(得分:1)
VB似乎不是争吵的最佳选择。也许你可以在C#中有一个单独的程序集,你可以这样做:
byte b = 255;
sbyte sb = (sbyte) b;
(默认情况下,在C#中取消选中运行时操作)
或者,可以关闭VB项目级别的溢出检查。
项目属性 - &gt; &编译期GT;高级编译器选项 - &gt; [X]删除整数溢出检查
现在,你只需要施展!没算术!
Dim b As Byte = 255
Dim sb As SByte = CSByte(b)