Я создаю буфер, который будет читать/писать в баннере, в котором я могу полностью устранить проблемы, связанные с TCP-сегментацией. Единственная проблема, с которой я столкнулся, это переменная float, все остальное отлично работает, кроме того, для float. Я не могу найти информацию о том, как преобразовать биты int32 в float.Преобразование двоичных бит в плавающие биты
При преобразовании поплавок INT бит, используется следующий метод (Ripped прямо из исходного кода Java, и конвертированы)
private int floatToIntBits(float value)
{
int result = BitConverter.ToInt32(BitConverter.GetBytes(value), 0);
if (((result & 0x7F800000) == 0x7F800000) && (result & 0x80000000) != 0)
result = 0x7fc00000;
return result;
}
Однако, теперь мне нужно сделать обратное, к сожалению, ISN 't любые функции в классе BitConverter, который работает с float.
Я не могу найти много информации в JavaDocs, а не о том, что я могу лично использовать, вы можете найти информацию here.
К сожалению, поскольку это клиент-api для Unity3D, я не могу использовать небезопасный код, я нашел это решение раньше, и Unity запретила его. Спасибо за ответ, хотя +1 для простого решения. – Hobbyist
@ Christian.tucker да, это раздражает; Я много работаю (я поддерживаю несколько бинарных сериализаторов и других сетевых библиотек), поэтому мне очень больно *, когда «небезопасно» не разрешено –