在vb.net中强制转换

时间:2014-07-21 22:43:57

标签: vb.net casting

我试图为vb.net找到一个函数/运算符,它与c中的代码相同: uint8_t value1 = 200; int8_t value2 =(int8_t)value1;

- > value2应该是一些负值

因为有按位或者xor,而不是,我希望还有一种基于二进制而不是十进制值进行强制转换的简洁方法。

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

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

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

我非常感谢您的意见。

1 个答案:

答案 0 :(得分:0)

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

之后,您可以轻松地从一个转换为另一个。

    Dim a As UInt16
    Dim b As Int16

    a = 65530
    b = a

    Console.WriteLine(b) ' Prints -6