値を計算して UInt32 を返す高速なビットレベル ルーチンがあります。この値を SQL Server の 32 ビット int フィールドに格納する必要があります。フィールドのサイズを大きくしたくありません。この関数からの「バイト」を int フィールドに格納したいだけです。
一度に数百のこれらのレコードが要求されるため、ループ内で UInt32 を int に変換する最速の方法が必要です。左端のビットが UInt32 に設定されている場合は、int の符号ビットを設定する必要があります (または、実際には「反復可能な」ことを行いますが、符号ビットがおそらく最も簡単です)。
つまり、UInt32 の 4 バイトを 32 ビット int の 4 バイトにしたいだけです。BitConverter クラスを使用できますが、それが最速の方法かどうかはわかりません。次のような未チェックの領域でこれを行う方が速いでしょうか。
UInt32 fld = 4292515959;
unchecked {
return (int)fld;
// -2451337
}
ここで逆の質問がされているのを見て、答えが同じになるかどうか疑問に思っていました。