Я искал, но не могу найти хороший ответ для своей проблемы. Надеюсь, кто-то может мне помочь. У меня есть некоторые функции, которые записывают переменную C# в буфер в месте смещения. У меня есть функция, подобная приведенной ниже. Эта функция WriteFloat работает, и она правильно отображает все байты.Указатель на поплавок
public unsafe void WriteFloat(float v, byte[] m_Buffer,int m_Offset)
{
ValidateBufferSize(sizeof(float));
fixed (byte* buf = m_Buffer)
*(float*)(buf + m_Offset) = v;
m_Offset += sizeof(float);
}
У меня также есть для каждого типа функция чтения, которая может считывать значение из буфера. Смещение происходит там, где мы остановились после последнего чтения.
public unsafe float ReadFloat(byte[] m_Buffer,int m_Offset)
{
fixed (byte* buf = m_Buffer)
{
float v = *((float*)(buf + m_Offset));
m_Offset += sizeof(float);
return v;
}
}
В этом проблема. float - единственная переменная, которую я в настоящее время не поддерживаю, потому что моя функция ReadFloat всегда возвращает неправильное значение.
Ex: это буфер после того, как мы писали в буфер (Примечание: не возражаю первые 4 байта) последний 4 байта короткий 5.5f = 00 00 b0 40
08 00 01 01 00 00 b0 40
Когда я использую функцию readFloat в этом буфере, он всегда возвращает 0;
Есть ли что-то, что я делаю неправильно?