Struct {
byte F1[2]
SHORT F2
byte F3[512]
} BPD
CBD
{
SHORT CLENGTH
byte DATA[]
}
以上是2个c++结构。这里 SHORT 是 2 字节有符号的。将其转换为 C# 的最佳方法是什么?
(请注意,在第二个结构中,DATA 的长度是未定义的。)
我看过以下两个链接。
和
将数据读入结构后,我需要将短变量转换为大端。(反转字节)。
Struct {
byte F1[2]
SHORT F2
byte F3[512]
} BPD
CBD
{
SHORT CLENGTH
byte DATA[]
}
以上是2个c++结构。这里 SHORT 是 2 字节有符号的。将其转换为 C# 的最佳方法是什么?
(请注意,在第二个结构中,DATA 的长度是未定义的。)
我看过以下两个链接。
和
将数据读入结构后,我需要将短变量转换为大端。(反转字节)。
只需要转换“短”。大/小端平台上相同的字节数组。
因此,只需阅读结构并执行以下操作:
数据.F2 = ((uint)data.F2 >> 8) | ( ((uint)data.F2 & 0xFF) << 8);
和
数据.CLENGTH = ((uint)data.CLENGTH >> 8) | ( ((uint)data.CLENGTH & 0xFF) << 8);
自己解决了。
结构很好,但如果您不打算修改任何数据类,最好使用。我在 c# 中为 c++ 结构创建了类,对于从大到小字节序的转换,我创建了 3 个库函数,它对我有用。
感谢大家的宝贵意见。