2016-01-11 16 views
8

Tôi có mảnh sau của mã ví dụ:C# uint để ushort tràn như tại quê hương C

UInt16 a = 0x3A; 
UInt16 b = 0xFFDF; 
UInt16 result = Convert.ToUInt16(a - b); 

dòng 3 lỗi với một ngoại lệ tràn. Tuy nhiên tôi muốn đạt được kết quả tương tự như tôi sẽ trừ 2 quần short unsigned trong C và họ trên/underflow.

Cách thích hợp nhất để đạt được điều này là gì?

Trả lời

9

Bạn có thể che thấp hơn 16 bit như sau:

UInt16 result = Convert.ToUInt16((a - b) & 0xffff); 
+0

Bạn cũng có thể sử dụng [bối cảnh không được kiểm soát] (https://msdn.microsoft.com/library/a569z7k8.aspx): 'Kết quả ushort = không được đánh dấu ((ushort) (ab)); ' –

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