2009-03-27 33 views
6

Nếu tôi thử với BitConverter, nó yêu cầu mảng byte và tôi không có. Tôi có Int32 và tôi muốn chuyển đổi nó thành UInt32.C#: Cách chuyển đổi dài thành ulong

Trong C++ không có vấn đề gì với điều đó.

+0

Hơi bối rối những gì bạn đang yêu cầu ở đây bạn thân - longs, mảng byte, và ints - bạn có thể xây dựng? – Chris

Trả lời

17

Một dàn diễn viên đơn giản là tất cả những gì bạn cần. Vì có thể mất độ chính xác khi thực hiện việc này, chuyển đổi là rõ ràng.

long x = 10; 
ulong y = (ulong)x; 
+7

Không phải là điều này có thể tràn với âm bản lớn? Bạn có thể sử dụng 'bỏ chọn' để cắt ngắn thay vì: http://msdn.microsoft.com/en-us/library/a569z7k8(VS.71).aspx –

1

Để chuyển đổi một thời gian để một ulong, chỉ cần cast nó:

long a; 
ulong b = (ulong)a; 

C# sẽ KHÔNG ném một ngoại lệ nếu nó là một số âm.

+0

Tôi không tin rằng điều này ném một ngoại lệ với một giá trị âm, nhưng sẽ không phải là những gì bạn mong đợi ... không có .net trên đây (máy tính xách tay), hoặc sẽ kiểm tra nó. – Tracker1

+0

Nó sẽ không, nhưng bit đầu tiên sẽ được hiểu là bit quan trọng nhất thay vì bit dấu. – DuneCat

+0

Nó sẽ không ném. Bạn nên xem xét sửa đổi câu trả lời của bạn nếu không nó có thể gây hiểu lầm. – KFL

1
Int32 i = 17; 
UInt32 j = (UInt32)i; 

EDIT: Câu hỏi không rõ ràng cho dù bạn có một chặng đường dài hoặc một int?

+0

Tôi nghĩ John đang đề cập đến các độ dài "cũ" trong C hoặc C++ rộng 32 bit. –

+0

câu hỏi nói C#? –

+0

Tôi có nghĩa là anh ta đã gọi nó ra khỏi thói quen. –

1

Với chức năng này:

string test(long vLong) 
{ 
    ulong vULong = (ulong)vLong; 
    return string.Format("long hex: {0:X}, ulong hex: {1:X}", vLong, vULong); 
} 

Và việc sử dụng này:

string t1 = test(Int64.MinValue); 
    string t2 = test(Int64.MinValue + 1L); 
    string t3 = test(-1L); 
    string t4 = test(-2L); 

Đây sẽ là kết quả:

t1 == "long hex: 8000000000000000, ulong hex: 8000000000000000" 
    t2 == "long hex: 8000000000000001, ulong hex: 8000000000000001" 
    t3 == "long hex: FFFFFFFFFFFFFFFF, ulong hex: FFFFFFFFFFFFFFFF" 
    t4 == "long hex: FFFFFFFFFFFFFFFE, ulong hex: FFFFFFFFFFFFFFFE" 

Như bạn có thể thấy các bit được bảo quản hoàn toàn, thậm chí cho các giá trị âm.

Các vấn đề liên quan