gpt4 book ai didi

c# - 字节数组编码

转载 作者:太空宇宙 更新时间:2023-11-04 13:32:57 24 4
gpt4 key购买 nike

我的应用程序正在通过 UDP 套接字从另一个应用程序接收结构。另一个应用程序是用 C++ 编写的。该结构具有不同类型的变量。在我的应用程序端,我将接收到的消息从字节数组解码为所需的类型,并按以下方式将其放入字典类型变量 DecodedMessage 中:

DecodedMessage.Add("VarName", (float)BitConvertor.ToInt32(Buffer, VarOffset));

问题是我得到的值不正确。我认为问题在于我必须进行某种编码(marshal)处理,但我不知道该怎么做。C++ 应用程序使用#pragma pack(1) 声明。

最佳答案

如果 C++ 应用程序发送浮点值,您需要使用 BitConverter.ToSingle而不是 ToInt32()。但是,如果是这种情况,或者 C++ 应用程序正在发送您只想保存为浮点值的 int 值,您的问题并不清楚。

编辑

好的,您的 C++ 应用正在发送某个结构,我们假设它看起来像这样:

struct whatever
{
int var1;
float var2;
byte var3[16];
}

既然您知道数据的结构,就可以像这样使用 BinaryReader 读取它:

var binReader = new BinaryReader(new MemoryStream(Buffer));
int var1 = binReader.ReadInt32();
float var2 = binReader.ReadSingle();
byte[] var3 = binReader.ReadBytes(16);

现在您可以对这些数据做任何您想做的事情。

关于c# - 字节数组编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30776100/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com