将C++结构转换为 C#
Convert C++ struct to C#
我在下面有一个C++结构:
struct CUSTOM_DATA {
int id;
u_short port;
unsigned long ip;
} custom_data;
如何将其转换为 C# 结构,序列化它并通过 tcp 套接字发送?
谢谢!
上发
那么C#代码会是什么?
[StructLayout(LayoutKind.Sequential)]
public struct CustomData
{
public int id;
public ushort port;
public uint ip;
}
public void Send()
{
CustomData d = new CustomData();
d.id = 12;
d.port = 1000;
d.ip = BitConverter.ToUInt32(IPAddress.Any.GetAddressBytes(), 0);
IntPtr pointer = Marshal.AllocHGlobal(Marshal.SizeOf(d));
Marshal.StructureToPtr(d, pointer, false);
byte[] data_to_send = new byte[Marshal.SizeOf(d)];
Marshal.Copy(pointer, data_to_send, 0, data_to_send.Length);
client.GetStream().Write(data_to_send, 0, data_to_send.Length);
}
此结构的 C# 版本为:
[StructLayout(LayoutKind.Sequential)]
public struct CustomData
{
public int id;
public ushort port;
public uint ip;
}
至于通过套接字发送,您可以直接发送二进制数据。 Marshal 类具有从结构中获取指针 (IntPtr) 并复制到字节数组中的方法。
[StructLayout(LayoutKind.Sequential)]
struct CUSTOM_DATA {
int id;
ushort port;
uint ip;
};
CUSTOM_DATA cData ; // use me
编辑:谢谢里德
相关文章:
- JSON转换为nlohmann JSON-lib中的结构数组
- NLOHMANN 的 JSON 库将数组转换为结构向量
- 从成员指针到整个结构/类的强制转换
- 在nlohmann json中,如何将嵌套对象的数组转换为嵌套结构的向量
- 将字符数组转换为时间结构
- 使用带有链表的堆栈数据结构将中缀转换为后缀
- i2d_X509_REQ_INFO无法正确转换req_info结构
- 在C++中将结构转换和存储为二进制
- 将字符数组转换为结构时出现问题. 结构的字符数组变量溢出
- 转换包含向量 C++ 的语法和结构
- 正在转换结构数据的字节序
- 如何大致将 cpp 代码结构转换为 python
- 将结构 std::memcpy 转换为具有足够容量的 std::vector 是未定义的行为<char>吗?
- C++ 向下转换结构
- 尝试在C++中转换结构时出现奇怪的错误消息
- 向向下转换结构添加属性值会导致分段错误
- C++基于子类型动态强制转换结构
- 从字节缓冲区强制转换结构
- c++中的类型转换结构
- c++的类型转换结构指针指向类型值