(byte)
VB.NET中的等价物:
C#:
uint value = 1161;
byte data = (byte)value;
数据 = 137
VB.NET:
Dim value As UInteger = 1161
Dim data1 As Byte = CType(value, Byte)
Dim data2 As Byte = CByte(value)
例外:算术运算导致溢出。
如何获得与 C# 相同的结果?
(byte)
VB.NET中的等价物:
uint value = 1161;
byte data = (byte)value;
数据 = 137
Dim value As UInteger = 1161
Dim data1 As Byte = CType(value, Byte)
Dim data2 As Byte = CByte(value)
例外:算术运算导致溢出。
如何获得与 C# 相同的结果?
默认情况下,C# 不检查整数溢出,但 VB.NET 会。
如果您将代码包装在一个checked
块中,您会在 C# 中得到相同的异常:
checked
{
uint value = 1161;
byte data = (byte)value;
}
在您的 VB.NET 项目属性中,启用Configuration Properties => Optimizations => Remove Integer Overflow Checks,您的 VB.NET 代码将与您的 C# 代码完全相同。
然后对整个项目禁用整数溢出检查,但这通常不是问题。
尝试首先从数字中删除最重要的字节,然后将其转换为字节:
Dim value As UInteger = 1161
Dim data1 As Byte = CType(value And 255, Byte)
Dim data2 As Byte = CByte(value And 255)
为了得到最重要的字节,你可以做相当hackalicious
Dim data1 = BitConvertor.GetBytes(value)(0)
它是明确的,您不需要禁用溢出检查。