Struct {
byte F1[2]
SHORT F2
byte F3[512]
} BPD
CBD
{
SHORT CLENGTH
byte DATA[]
}
以上是2 c ++结构。这里SHORT是2字节签名。 将它转换为C#的最佳方法是什么?
(注意,在DATA的第二个结构长度是未定义的。)
我见过以下两个链接。
Fixed length strings or structures in C#
和
Reading a C/C++ data structure in C# from a byte array
将数据读入结构后,我需要将短变量转换为大端。 (反转字节)。
答案 0 :(得分:0)
只需转换'短'即可。大/小端平台上相同的字节数组。
所以,只需阅读结构并执行以下操作:
data.F2 =((uint)data.F2>> 8)| (((uint)data.F2& 0xFF)<< 8);
和
data.CLENGTH =((uint)data.CLENGTH>> 8)| (((uint)data.CLENGTH& 0xFF)<< 8);
答案 1 :(得分:-2)
解决了自己。
结构很好,但如果你不打算修改任何数据类,最好使用。 我在c#中为c ++结构创建了类,对于大到小的endian转换,我创建了3个库函数,它对我有用。
让每个人都有宝贵的意见。