2
我已经搜索,但我找不到我的问题很好的答案我希望有人能帮助我。 我有一些函数将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函数总是返回错误的值。
例:这是缓冲区后,我们写信给缓冲(注:不介意前4个字节)的最后4个字节是短5.5F = 00 00 B0 40
08 00 01 01 00 00 b0 40
当我在该缓冲区上使用readFloat函数时,它总是返回0;
有什么我做错了吗?