2014-07-21 204 views
0

我试图找到vb.net的函数/运算符,它与c中的以下内容具有相同的功能: uint8_t value1 = 200; int8_t value2 =(int8_t)value1;在vb.net中强制铸造

- >值2应该有一些负值

因为有按位或,异或,并且,不,我倒是希望也有一个干净的方式做基于二进制,而不是十进制投值。

我会需要这个8位,16位的32位整数和两个方向。

如果你问自己为什么,我正在为微控制器开发一个自定义通信库,并且发送的数据是全通无符号字节,并且在屏蔽,奇偶校验和排列数据后,我最终得到无符号整数值被转换回原来的类型。

现在我知道,如果输入值大于127,我可以通过减去一些值来实现这一点......但这只是混乱和缓慢,所以我希望有一个函数只是告诉编译器做一个直接演员而不检查它是否有意义。

我真的很感激你的意见。

+0

我不知道在VB.NET中会做什么,你可能需要通过'BitConverter'类。 – jmcilhinney

回答

0

在VB中,默认检查溢出(C#不是)。你必须在编译器设置来禁用它(我认为这是在高级编译选项。This answer可以帮助你。

之后,您可以easely刚刚从一个转换到另一个。

Dim a As UInt16 
    Dim b As Int16 

    a = 65530 
    b = a 

    Console.WriteLine(b) ' Prints -6 
+0

可爱的感谢,我认为这会让我的生活变得更加简单:) – Chris