2010-01-22 40 views
18

Có cách nào để đặt int thành giá trị âm bằng cách sử dụng chữ thập lục phân trong C# không? Tôi đã kiểm tra các đặc điểm kỹ thuật trên Integer literals nhưng nó đã không đề cập đến bất cứ điều gì.Đặt int thành giá trị âm bằng cách sử dụng chữ thập lục phân trong C#

Ví dụ:

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

ký hiệu thập lục phân là rõ ràng hơn cho các ứng dụng của tôi, và tôi không muốn sử dụng uint s vì tôi sẽ cần phải làm thêm một số đúc.

+2

hãy xem ở đây: http://stackoverflow.com/questions/319993/c-hexadecimal-notation-and-signed-integers –

Trả lời

22

Sử dụng các từ khóa không được kiểm soát.

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

hoặc thậm chí ngắn hơn

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

tôi nghĩ rằng bạn có thể sử dụng -0x1 với C#

+1

Có, đây là cú pháp hợp lệ, nhưng phải làm sự phủ định trong tôi đầu để tìm ra giá trị thực sự là một chút tẻ nhạt. –

0

Bạn có thể sử dụng lớp "Chuyển đổi":

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

Bạn phải cast nó và đặt nó trong một bối cảnh không được kiểm soát.

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

Thao tác này sẽ hoàn thành công việc mà không cần thao tác hoặc bỏ chọn.

int i = 0xFF << 24 | 0xFF << 16 | 0xFF << 8 | 0xFF; 
Các vấn đề liên quan