我的應用程序正在通過UDP套接字從另一個應用程序接收一個結構體。另一個應用程序是用C++編寫的。該結構具有不同類型的變量。 在我的申請側,我解碼從字節數組所需類型的接收到的消息,並把它在一個字典類型以下列方式可變DecodedMessage
:字節數組編組
DecodedMessage.Add("VarName", (float)BitConvertor.ToInt32(Buffer, VarOffset));
問題是,我得到的值是不正確的。我相信問題是我必須做一些打毛球,但我不知道如何去做。 C++應用程序使用#pragma pack(1)聲明。
你能給出一個不正確的值的例子嗎?像expected = x,got = y?它可能是如果你的C++應用程序使用big-endian編碼和c#代碼小端或反之亦然 –
@DenisYarkovoy數字只是爆炸,而不是獲得約1.02的值,我得到1E + 09左右 – AnR
以及你的代碼是從緩衝區中讀取Int32的,所以你不能期望得到1.02。如果你的C++結構中的浮點數比T_D給出的答案是正確的,並且你需要使用ToSingle轉換器來正確讀取你的float –