3

我正在使用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

4

0 回答 0