Я записываю различные типы в поток байтов путем ручного преобразования и сдвига значений. Я обнаружил, что это более чем в три раза быстрее, чем при использовании 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);