vb.net中的强制铸造

vb.net中的强制铸造,vb.net,casting,Vb.net,Casting,我试图为vb.net找到一个函数/运算符,该函数/运算符与c中的以下操作相同: uint8_t值1=200; int8_t value2=(int8_t)value1 ->值2应该是一些负值 由于存在按位or、xor和not,我希望还有一种基于二进制而不是十进制值进行转换的干净方法 对于8位、16位和32位整数,以及双向整数,我需要这个 如果你问自己为什么,我正在为微控制器开发一个自定义通信库,发送的数据总是无符号字节,在屏蔽、奇偶校验和排列数据之后,我最终得到了无符号整数值,需要转换回原始类型

我试图为vb.net找到一个函数/运算符,该函数/运算符与c中的以下操作相同: uint8_t值1=200; int8_t value2=(int8_t)value1

->值2应该是一些负值

由于存在按位or、xor和not,我希望还有一种基于二进制而不是十进制值进行转换的干净方法

对于8位、16位和32位整数,以及双向整数,我需要这个

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

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


我非常感谢您的输入。

在VB中,溢出是默认选中的(C#不是)。你必须在编译器设置中禁用它(我想它在高级编译选项中。可以帮你)

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

    Dim a As UInt16
    Dim b As Int16

    a = 65530
    b = a

    Console.WriteLine(b) ' Prints -6

我不知道VB.NET中有任何东西可以做到这一点。您可能必须通过
位转换器
类。非常感谢,我认为这将使我的生活变得更加轻松:)