У меня есть быстрая подпрограмма на уровне битов, которая вычисляет значение и возвращает UInt32. Мне нужно сохранить это значение в SQL Server в 32-битном поле int. Я не хочу увеличивать размер поля, а просто хочу сохранить «байты» из этой функции в поле int.
Одновременно запрашиваются сотни таких записей, поэтому мне нужен самый быстрый способ преобразовать UInt32 в int в цикле. Если крайний левый бит установлен в UInt32, он должен установить бит знака int (или сделать что-то «повторяемое», на самом деле, но бит знака, вероятно, будет проще всего).
Другими словами, я просто хочу, чтобы 4 байта UInt32 стали 4 байтами 32-битного целого числа. Я мог бы использовать класс BitConverter, но я не уверен, что это самый быстрый способ. Было бы быстрее сделать это с непроверенной областью, например:
UInt32 fld = 4292515959;
unchecked {
return (int)fld;
// -2451337
}
Я вижу, что здесь был задан обратный вопрос, и мне просто было интересно, будет ли ответ таким же в другом направлении: