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