2010-01-22 36 views
18

有沒有什麼方法可以在C#中使用十六進制文字將int設置爲負值?我檢查了Integer literals的規格,但沒有提及任何內容。在C#中使用十六進制文字設置整數爲負值

例如:

int a = -1;   // Allowed 
int b = 0xFFFFFFFF; // Not allowed? 

進制數爲我的應用程序更清晰,而且我不喜歡使用uint因爲我需要做一些額外的鑄造。

+2

看看這裏:http://stackoverflow.com/questions/319993/c-hexadecimal-notation-and-signed-integers –

回答

22

使用選中關鍵字。

unchecked 
{ 
    int b = (int)0xFFFFFFFF;  
} 

,甚至更短的

int b = unchecked((int)0xFFFFFFFF); 
1

我認爲你可以使用-0x1用C#

+1

是的,這是有效的語法,但不必做否定我的要弄清楚真正的價值是什麼有點乏味。 –

0

您可以使用 「轉換」 類:

string hex = "FF7F"; 
int myInt = Convert.ToInt32(hex, 16); 
1

你要投它,並把它放在一個unchecked上下文。

unchecked { 
    int i = (int)0xFFFFFFFF; 
} 
1

這將在沒有未經檢查的操作或鑄造的情況下完成工作。

int i = 0xFF << 24 | 0xFF << 16 | 0xFF << 8 | 0xFF; 
相關問題