2016-11-27 42 views
2

我想知道我可以定义一个类包含与大小的int数组对象的二进制文件19我如何定义一个类来deserialze二进制文件

请参阅如何将数据的附加的图片看起来像在Hex Editor Neo中。当浮法

enter image description here

显示我曾尝试以下,但没有运气。请告诉我在这里做错了什么。

[ProtoContract] 
public class ChannelData 
{ 
    [ProtoMember(1)] 
    public List<float> array = new List<float>(19); 
} 

using (var file = File.OpenRead("0.cnl")) 
{ 
    ChannelData newchannel = Serializer.Deserialize<ChannelData>(file); 
} 

我正在使用protobuff进行反序列化。谢谢!

二进制文件没有使用任何二进制序列的原始文件序列化。 所以我认为它不能反序列化使用任何解串器?可能需要BitConverter做的,但不知道..

+0

它不应该是'[ProtoMember(0)] '? – NtFreX

+0

哦可能坏实际上我刚刚发现这就是二进制文件没有使用它没有任何属性串行二进制序列化。所以我认为它不能反序列化使用任何解串器?可能需要BitConverter做的,但不知道... :( – user964829

+0

至于我的协议缓冲区的理解去我了解,没有属性被写入文件和串行器/解串器必须知道格式/的bitconverter只对单一数据类型的序列化和反序列化..你需要分析多个 – NtFreX

回答

0

您可以加载浮到列表中,然后将其拆分频道,像

public static unsafe List<float> LoadToList(byte[] bytes) 
    { 
     var list = new List<float>(); 
     var step = sizeof (float); 
     for (int i = 0; i < bytes.Length; i += step) 
     { 
      fixed (byte* pbyte = &bytes[i]) 
      { 
       list.Add(*((float*)pbyte)); 
      } 
     } 

     return list; 
    } 
+0

完美这正是我一直在寻找的感谢。 – user964829

相关问题