2010-02-25 62 views
1
Struct { 
byte F1[2] 
SHORT F2 
byte F3[512] 
} BPD 


CBD 
{ 
SHORT CLENGTH 
byte DATA[] 
} 

上面是2个C++结构。这里SHORT是2字节签名的。 将其转换为C#的最佳方式是什么?c#和大端转换中的固定/可变长度结构

(请注意,在数据的第二struture长度uundefined。)

我看到以下两个链接。

Fixed length strings or structures in C#

Reading a C/C++ data structure in C# from a byte array

数据读入结构之后我需要隐蔽短变量大端。 (反转字节)。

回答

-2

解决了我自己。

结构是好的,但如果你不打算修改任何数据类更好用。 我已经在c#中为C++结构和大到小端转换创建了类,我创建了3个库函数,它适用于我。

让每个人都感受到宝贵的投入。

+1

小心分享您的代码? – Pat 2010-03-18 22:56:17

0

只需“短”即可转换。大/小端平台上的字节数组相同。

所以,只要读结构,做这样的事情:

data.F2 =((UINT)data.F2 >> 8)| (((uint)data.F2 & 0xFF)< < 8);

data.CLENGTH =((UINT)data.CLENGTH >> 8)| (((uint)data.CLENGTH & 0xFF)< < 8);

+0

感谢您的回复。我的第一个问题就在那里。 从字节数组中提取数据的最佳方法。 将其转换为结构? 将字节数据放入类构造函数并将其处理到类中? 我有超过100个结构来处理,它们嵌套到10级。 – Manjoor 2010-02-26 08:13:22

+0

对于第一个结构 - 是的,“C#值类型”是最优的。 对于第二种结构,最好将其替换为一个动态数组。 – qehgt 2010-02-26 12:59:51

+0

你能告诉我如何? – Manjoor 2010-02-27 06:29:39