C++结构体转换为C#

问题描述

typedefstruct__BBBB{charchCom[10];}strBbbb;typedefstruct__CCCC{strBbbbstrCom[20];}strCccc;

这个C++的结构体转换成C#是啥样子啊?

解决方案

解决方案二:
语法类似这样:[StructLayout(LayoutKind.Sequential,CharSet=CharSet.Auto)]internalstructKeyEventRecord{internalboolkeyDown;internalshortrepeatCount;internalshortvirtualKeyCode;internalshortvirtualScanCode;internalcharuChar;internalintcontrolKeyState;}

解决方案三:
[StructLayoutAttribute(LayoutKind.Sequential,CharSet=CharSet.Unicode,Pack=10)]publicstructstrBbbb{char[]chCom;}[StructLayoutAttribute(LayoutKind.Sequential,CharSet=CharSet.Unicode,Pack=20)]publicstructstrCccc{strBbbb[]strCom;}

不知道这样对不对,而且新的问题出来了strCccc怎么计算它的大小?
解决方案四:
可以用sizeof,因为结构体是值类型,LZ可以参阅MSDNsizeof关键字用法
解决方案五:
刚有个错误,struct虽然是值类型但在MSDN已经说明了:对于所有其他类型(包括struct),sizeof运算符只能在不安全代码块中使用。虽然可以使用SizeOf方法,但该方法返回的值和sizeof返回的值并不总是相同的。Marshal.SizeOf在已封送处理类型后返回大小,而sizeof返回公共语言运行库分配的大小(包括任何空白)。

解决方案六:
struct__BBBB{publicchar[]chCom=newchar[10];}struct__CCCC{public__BBBB[]strCom=new__BBBB[20];}
解决方案七:
O,2楼的我贴错了。[StructLayoutAttribute(LayoutKind.Sequential,CharSet=CharSet.Unicode,Pack=1)]publicstructstrBbbb{[MarshalAs(UnmanagedType.ByValArray,SizeConst=10)]char[]chCom;}[StructLayoutAttribute(LayoutKind.Sequential,CharSet=CharSet.Unicode,Pack=1)]publicstructstrCccc{[MarshalAs(UnmanagedType.ByValArray,SizeConst=20)]strBbbb[]strCom;}

时间: 2024-09-08 18:27:35

C++结构体转换为C#的相关文章

C++的结构体转换为C#的,尝试读取或写入受保护的内存。这通常指示其他内存已损坏

问题描述 各位大神们,我在C#中调用c++的dll提供的接口函数,函数中需要传递一个结构体dll中的函数接口是:ReadTag(HANDLEhHandle,REC_INFO&data);其中REC_INFO是一个结构体structREC_INFO{BYTEInfoType;union{//收集标签返回struct{BYTETagID[8];//BYTETagState;struct{BYTETagPower:2;BYTETagSensor:1;BYTETagInitialization:1;BY

怎么把结构体转换为十六进制的字符串

问题描述 我现在在做的一个东西是在一个结构体里面,比如structStationInfo{publicstringid;publicstringpwd;publicstringname;}我需要将这个结构体的信息转换为一个十六进制的字符串然后存到一个.INI的文件里面去,算是个小小的加密,不给其它人看到.请问如何将这段代码转成一个十六进制的字符串,怎么将十六进制的字符串再转回来呢? 解决方案 解决方案二:序列化,二进制内容保存,然后通过反序列化恢复.当然如果你非要十六进制的内容保存,可以将文件内

c# udp-C# 嵌套结构体 和byte 数组互相转换?

问题描述 C# 嵌套结构体 和byte 数组互相转换? 现在需要udp 发送一个结构体数据 结构体类型大概如下 struct A{ int a;} struct B{int b;} struct C{ A a; B b;} 现在要发送 结构体C类型的数据, 请问各位大神,怎样将此类结构体转换为byte数组!

Linux下的串口编程:struct termios结构体

termios结构体说明 termios结构体中,该结构体一般包括如下的成员: tcflag_t c_iflag; tcflag_t c_oflag; tcflag_t c_cflag; tcflag_t c_lflag; cc_t     c_cc[NCCS]; 其具体意义如下 c_iflag:输入模式标志,控制终端输入方式,具体参数如下所示. c_iflag参数表 键值说明 IGNBRK 忽略BREAK键输入 BRKINT 如果设置了IGNBRK,BREAK键的输入将被忽略,如果设置了BRK

让你提前认识软件开发(13):指针及结构体的使用

第1部分 重新认识C语言 指针及结构体的使用   [文章摘要]         指针在C语言中占有很重要的地位,同时也是学习C语言的难点所在.结构体属于用户自己建立的数据类型,在实际的软件开发项目中应用很广泛.         本文以实际的例子介绍了C语言中指针和结构体的使用方法,为进一步的学习和应用提供了有益的参考. [关键词]         C语言 指针  结构体 文件   1.指针和结构体简介         在C语言中,将地址形象化地称为指针,意即通过它能够找到以它为地址的内存单元.实

c语言-关于C语言结构体指针类型的强制转换(求大神详细解答)

问题描述 关于C语言结构体指针类型的强制转换(求大神详细解答) #include <iostream> #include <algorithm> using namespace std; typedef struct { string dna; int count; }DNA; DNA dna[101]; **int cmp(const void *a,const void *b) { DNA *aa = (DNA *)a; DNA *bb = (DNA *)b; return a

【C/C++学院】0814-引用高级、引用高级增加/auto自动变量自动根据类型创建数据/Bool/Enum/newdelete全局/大数据乘法与结构体/函数模板与auto/宽字符本地化/inline

引用高级.引用高级增加 #include<iostream> #include<stdlib.h> // int a[10] // int (&ra)[10] // int a[2][5] // int (&ra)[2][5] void main1() { int a[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; int(&ra)[10](a);//引用就是给原来的变量有一个别名同一个地址 int i = 0; for (

[MySQL学习] Innodb锁系统(3)关键结构体及函数

1.锁对象的定义: 关键结构体: UNIV_INTERN lock_sys_t* lock_sys = NULL; lock_sys是一个全局变量,用于控制整个Innodb锁系统的全部锁结构,其对应的结构体为lock_sys_t,该结构体只包含两个成员: struct lock_sys_struct{     hash_table_t* rec_hash;     ulint rec_num; }; 从函数lock_rec_create可以很容易看出这两个变量的作用: quoted code:

C#中怎么读取Struct(结构体)文件!!!!???大虾帮帮我啊。。。。。

问题描述 做项目需要读取一个.DAT文件,这个文件是别人给的,里面记录了一些调试需要用到的参数,是用结构体(Struct)写成的,用的是C++写的.....现在我拿到了这个.dat文件的结构,里面大致形式为(嵌套的结构体):structA{...structB{....structC{.....}}}好像用C++读取很容易,但我目前的软件都是用C#写的,只能在C#里面读了,这个要怎么读啊?网上找了一些资料,看上去好复杂,哪位大虾能详细的讲一下啊,谢谢!!!!还有,我曾经想过是否可以用C++写一个