2016-01-11 11 views
8

I mają następujące kawałek przykład kodu:C# uint do USHORT przepełnienia jak w macierzystym C

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

linia 3 błędów z wyjątkiem przelewowy. Jednak chcę osiągnąć taki sam wynik, jakbym odjął 2 unsigned szorty w C i one over/underflow.

Jaki jest najbardziej właściwy sposób na osiągnięcie tego?

Odpowiedz

9

może zamaskować 16 młodszych bitów następująco:

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

Można również użyć [niekontrolowanego okolicznościach] (https://msdn.microsoft.com/library/a569z7k8.aspx) 'Wynik ushort = niezaznaczone ((ushort) (ab)); ' –

Powiązane problemy