将字节转换为SByte

时间:2012-02-24 16:45:52

标签: vb.net casting overflow

我从串口读取字节,但我需要将它们转换为带符号的8位整数(SByte)。不幸的是,Visual Basic中的溢出检查防止字节值255在SByte中变为-1。所以,基本上,我想做以下事情:

uint8_t a = 255;
int8_t b = (int8_t)a;    // b == -1

如何在Visual Basic中执行此操作?

2 个答案:

答案 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)