有沒有什麼方法可以在C#中使用十六進制文字將int
設置爲負值?我檢查了Integer literals的規格,但沒有提及任何內容。在C#中使用十六進制文字設置整數爲負值
例如:
int a = -1; // Allowed
int b = 0xFFFFFFFF; // Not allowed?
進制數爲我的應用程序更清晰,而且我不喜歡使用uint
因爲我需要做一些額外的鑄造。
有沒有什麼方法可以在C#中使用十六進制文字將int
設置爲負值?我檢查了Integer literals的規格,但沒有提及任何內容。在C#中使用十六進制文字設置整數爲負值
例如:
int a = -1; // Allowed
int b = 0xFFFFFFFF; // Not allowed?
進制數爲我的應用程序更清晰,而且我不喜歡使用uint
因爲我需要做一些額外的鑄造。
使用選中關鍵字。
unchecked
{
int b = (int)0xFFFFFFFF;
}
,甚至更短的
int b = unchecked((int)0xFFFFFFFF);
我認爲你可以使用-0x1
用C#
是的,這是有效的語法,但不必做否定我的要弄清楚真正的價值是什麼有點乏味。 –
您可以使用 「轉換」 類:
string hex = "FF7F";
int myInt = Convert.ToInt32(hex, 16);
你要投它,並把它放在一個unchecked上下文。
unchecked {
int i = (int)0xFFFFFFFF;
}
這將在沒有未經檢查的操作或鑄造的情況下完成工作。
int i = 0xFF << 24 | 0xFF << 16 | 0xFF << 8 | 0xFF;
看看這裏:http://stackoverflow.com/questions/319993/c-hexadecimal-notation-and-signed-integers –