将 c++ 结构转换为 c# 结构
Converting c++ struct to c# struct
谁能告诉我如何将以下结构转换为 c#
typedef struct DES_ks
{
union
{
DES_cblock cblock;
/* make sure things are correct size on machines with
* 8 byte longs */
DES_LONG deslong[2];
} ks[16];
} DES_key_schedule
您需要查找 typedef 以获取DES_cblock和DES_LONG来翻译它。但是,要入门,您需要阅读 StructLayoutAttribute
.将 C 联合转换为 C# 的方法是使用显式布局结构:
[StructLayout(LayoutKind.Explicit)]
public struct DES_ks
{
[FieldOffset(0)]
public DES_cblock cblock;
[FieldOffset(0)]
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
public DES_LONG[] deslong;
}
感謝@Konrad修復了我暫時的瘋狂;因為你想產生一個聯合,你需要所有的場在記憶體中重疊。这是在 C# 中通过告诉编译器将它们布置在相同的偏移量(在本例中为 0)来实现的。
C# 没有联合。您可以获得的最接近的是使用FieldOffset。但是,如果您的结构没有直接传递给外部函数,则最好使用更 OO 的方法。我建议只创建一个包含两种类型数组的结构,并将您不使用的结构设置为 null。
相关文章:
- 在C++中将结构转换和存储为二进制
- 如何大致将 cpp 代码结构转换为 python
- 如何将可变大小的结构转换为字符数组
- 尝试传递结构数组,但出现"无法将'结构'转换为'结构*'错误
- 我可以安全地将浮点数的结构转换为浮点数组吗C++?
- 如何将结构转换为字符串?
- 如何将C++结构转换为 C# 等效结构?
- 将结构转换为布尔值
- 将具有不同字段的结构转换为 uint8 的数组
- 将 constexpr 结构转换为运行时结构
- 将结构转换为类
- 我必须将记录结构转换为一类,并且不断遇到多个错误
- 如何将 ANSI C 结构转换为 C++ 类,但保持其 ANSI C 友好
- 将 C++ 中的结构转换为 Java 中的类
- 将结构转换为 constexpr 数组uint8_t
- 将大型结构转换为小型C
- c++正在将未知结构转换为字符串
- C++隐式将平凡可构造的结构转换为成员
- 将C++联合结构转换为 VB6
- C到C++:将结构转换为类