Преобразование float в int без ЛЮБОГО преобразования?

Я записываю различные типы в поток байтов путем ручного преобразования и сдвига значений. Я обнаружил, что это более чем в три раза быстрее, чем при использовании BitConverter или BinaryWriter.

Моя проблема связана с поплавками. Мне нужно преобразовать их в int, чтобы выполнить с ними операции сдвига, но любое преобразование в int вызовет неявное преобразование с усечением и т. Д. Я хочу, чтобы точное двоичное представление оставалось неизменным. Возможно ли это?

напр. Я хочу делать что-то подобное:

byte[] bytes = new byte[4];
float myFloat = 32.2;

//following won't compile as can't shift floats.
bytes [0] = (byte)myFloat;
bytes [1] = (byte)(myFloat >> 8);
bytes [2] = (byte)(myFloat >> 16);
bytes [3] = (byte)(myFloat >> 24);
9
задан Peter Mortensen 29 June 2012 в 14:05
поделиться