2016-07-07 65 views
0

我怎么可以声明在C#中2个字节十六进制,并在“如果”像这样的Java代码比较:我怎样才能申报六角瓦尔在C#

public static final int MSG_GENERAL_RESPONSE = 0x8001; 

int type = buf.readUnsignedShort(); 

if (type == MSG_TERMINAL_REGISTER) { 
} 

C#2个字节是不可能在C#中?我试过并没有找到方法。我如何将此代码转换为c#?

+0

它在C#中是一样的。 C#使用BitConverter类。在那里你可以使用BitConverter.ToUInt16将字节数组转换为无符号短符号,或使用BitConverter.GetBytes将其从无符号短符号转换为字节数组 – 2016-07-07 00:29:19

+1

如果删除'final'关键字,那就是有效的C#代码。在C#中,“short”数据类型是2个字节。我不明白这个问题是什么。 – Amy

回答

0

这将是确定使用你的情况int(这是一个32位有符号整数类型),但它看起来像ushort(16位无符号)更精确的位置:

public const ushort MSG_GENERAL_RESPONSE = 0x8001; 

// ... 

ushort type = buf.readUnsignedShort(); 

if (type == MSG_TERMINAL_REGISTER) { 
} 

注如果你想给在十六进制文字(并约定在前面的数字是8通过F,那么它是二进制补码),你需要以下笨拙的符号:

// negative: 
public const short MSG_GENERAL_RESPONSE = unchecked((short)0x8001); 

您不能在C#中使用final。对于班级成员,您可以使用static readonlyconst(后者是隐式静态的)。对于局部变量,您可以使用const