我正在使用Flatbuffers序列化一些数据,然后通过 TCP 通过网络发送。我可以在客户端应用程序中很好地反序列化它,但是我发送的一些图像数据有问题。
我的 flatbuffers 架构定义如下:
namespace datapacket;
table FlatDataPacket {
id:string;
framedata:[ubyte];
}
root_type FlatDataPacket;
我像这样反序列化我的数据:
ByteBuffer bb = new ByteBuffer(buffer);
var flatDataPacket = FlatDataPacket.GetRootAsFlatDataPacket(bb);
现在,在 中flatDataPacket
,我Id
的很好,但是,我的imagedata
长度是 8,当我尝试转换为图像时,出现异常:
for (int i = 0; i < flatDataPacket.FramedataLength; i++)
{
incomingPacket.FrameBytes[i] = flatDataPacket.GetFramedata(i);
}
Image returnImage = Image.FromStream(new MemoryStream(incomingPacket.FrameBytes));//Throws exception
例外:
System.Drawing.dll 中出现“System.ArgumentException”类型的异常,但未在用户代码中处理
附加信息:参数无效。
我究竟做错了什么?如果我在没有平面缓冲区的情况下执行此操作并使用 JSON 或仅发送图像数据,则图像被发送和反序列化就好了。我是否使用了不正确的数据类型ubyte
?