What is the equivalent of “(byte)” in VB.NET?
vb.net中与
1 2 | uint value = 1161; byte data = (byte)value; |
数据=137
VB.NET:1 2 3 | Dim value As UInteger = 1161 Dim data1 As Byte = CType(value, Byte) Dim data2 As Byte = CByte(value) |
异常:算术运算导致溢出。
我怎样才能获得与C相同的结果?
默认情况下,C不检查整数溢出,但vb.net检查整数溢出。
如果将代码包装在
1 2 3 4 5 |
在您的vb.net项目属性中,启用配置属性=>优化=>删除整数溢出检查,您的vb.net代码的工作方式与您的C代码完全相同。
然后对整个项目禁用整数溢出检查,但这通常不是问题。
尝试首先从数字中切掉最重要的字节,然后将其转换为字节:
1 2 3 | Dim value As UInteger = 1161 Dim data1 As Byte = CType(value And 255, Byte) Dim data2 As Byte = CByte(value And 255) |
为了得到最重要的字节,您可以执行相当黑客的操作
1 | Dim data1 = BitConvertor.GetBytes(value)(0) |
它是显式的,您不需要禁用溢出检查。