1
Struct {
 byte F1[2]
 SHORT F2
 byte F3[512]
} BPD


CBD
{
 SHORT CLENGTH
 byte DATA[]
}

以上是2个c++结构。这里 SHORT 是 2 字节有符号的。将其转换为 C# 的最佳方法是什么?

(请注意,在第二个结构中,DATA 的长度是未定义的。)

我看过以下两个链接。

C# 中的固定长度字符串或结构

从字节数组中读取 C# 中的 C/C++ 数据结构

将数据读入结构后,我需要将短变量转换为大端。(反转字节)。

4

2 回答 2

0

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

因此,只需阅读结构并执行以下操作:

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

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

于 2010-02-26T04:21:18.160 回答
-2

自己解决了。

结构很好,但如果您不打算修改任何数据类,最好使用。我在 c# 中为 c++ 结构创建了类,对于从大到小字节序的转换,我创建了 3 个库函数,它对我有用。

感谢大家的宝贵意见。

于 2010-03-05T13:56:02.567 回答