【问题标题】:Forced Casting in vb.netvb.net 中的强制转换
【发布时间】:2014-09-12 14:33:36
【问题描述】:

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

-> value2 应该是一些负值

因为有按位或,异或,而不是,我希望还有一种干净的方法可以基于二进制而不是十进制值进行强制转换。

我需要它来处理 8、16 和 32 位整数以及双向。

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

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

非常感谢您的意见。

【问题讨论】:

  • 我不知道 VB.NET 中有什么可以做到这一点。您可能必须通过 BitConverter 课程。

标签: vb.net casting


【解决方案1】:

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

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

    Dim a As UInt16
    Dim b As Int16

    a = 65530
    b = a

    Console.WriteLine(b) ' Prints -6

【讨论】:

  • 非常感谢,我认为这会让我的生活变得更轻松 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-09
  • 1970-01-01
  • 2010-12-08
  • 2021-05-28
  • 1970-01-01
相关资源
最近更新 更多