2016-07-07 60 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