C# 方法

[UnmanagedFunctionPointerAttribute(CallingConvention.StdCall, CharSet = CharSet.Ansi)]
public delegate void RecvSwitchStatusCallback(string no, int noLength, IntPtr cpointer, int dataLength);

public static void RequestRecvSwitchStatusCallback(string no, int noLength, IntPtr cpointer, int dataLength) {
IntPtr pointer = cpointer;
MyStruct[] listMyStruct = new MyStruct[dataLength];
int structSize = Marshal.SizeOf(typeof(MyStruct));
for (int i = 0; i < dataLength; ++i) {
var data = new IntPtr(pointer.ToInt64() + structSize * i);
MyStruct currentStruct = (MyStruct) Marshal.PtrToStructure(data, typeof(MyStruct));
listCommonLightStatus[i] = currentStruct;
}
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct MyStruct {
public byte id;
public int code;
};

[UnmanagedFunctionPointerAttribute(CallingConvention.StdCall, CharSet = CharSet.Ansi)]
public delegate void RecvSwitchStatusCallback(string no, int noLength, IntPtr cpointer, int dataLength);

C++ 结构体数组回调C#代码,c#数组只有一条的更多相关文章

  1. C与指针(结构体指针,函数指针,数组指针,指针数组)定义与使用

    类型 普通指针 指针数组(非指针类型) 数组指针 结构体指针 函数指针 二重指针 定义方式 int *p; int *p[5]; int (*p)[5]; int a[3][5]; struct{.. ...

  2. 1.0 基础、标示符、常量、数据类型(enum 枚举,struct 结构体)、操作符、循环、数组

    一.程序 现实生活中,程序是指完成某些事务的一种既定方法和过程,可以把程序看成是一系列动作执行过程的描述. 在计算机世界,程序是指令,即为了让计算机执行某些操作或解决某个问题而编写的一系列有序指令的集 ...

  3. L2-002. 链表去重(map结构体,精彩的代码)

    链表去重 时间限制 300 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定一个带整数键值的单链表L,本题要求你编写程序,删除那些键值的绝对值 ...

  4. C#中结构体定义并转换字节数组

    最近的项目在做socket通信报文解析的时候,用到了结构体与字节数组的转换:由于客户端采用C++开发,服务端采用C#开发,所以双方必须保证各自定义结构体成员类型和长度一致才能保证报文解析的正确性,这一 ...

  5. C# 结构体定义 转换字节数组 z

    客户端采用C++开发,服务端采用C#开发,所以双方必须保证各自定义结构体成员类型和长度一致才能保证报文解析的正确性. [StructLayoutAttribute(LayoutKind.Sequent ...

  6. C语言函数不能返回数组,但可以返回结构体

    为什么C语言函数可以返回结构体,却不可以返回数组?有这样的问题并不奇怪,因为C语言数组和结构体本质上都是管理一块内存,那为何编译器要区别对待二者呢? C语言函数为什么不能返回数组? 在C语言程序开发中 ...

  7. c语言结构体中的一个char数组怎么赋值?

    目录 前景提示 这里的结构体处理的步骤 一.char数组类型的处理 二.char数组指针类型的处理 三.全部代码 1. char数组 2. char数组指针 结语 前景提示 定义一个结构体,结构体中有 ...

  8. .NET C#基础(5):结构体 - 高性能代码的基石

    0. 文章目的   本文面向有一定.NET C#基础知识的学习者,介绍C#中结构体定义.使用以及特点. 1. 阅读基础   了解C#基本语法   了解.NET中的栈与托管堆 2. 值类型 2.1 .N ...

  9. C语言:结构体与数组

    #include <stdio.h> struct book{ ]; ]; int price; }; ] = {,,,,,,,,,}; int main(){ struct book * ...

随机推荐

  1. 学习 opencv---(5) 创建Trackbar(活动条) &图像对比度,亮度值调整

    学习如何在opencv 中用trackbar 函数创建和使用 轨迹条,以及图像对比度,亮度值的动态调整 一.OpenCV中轨迹条(Trackbar)的创建和使用 [1]创建轨迹条-----create ...

  2. 我的LaTeX中文文档模板

    中文LaTeX处理模板 环境MiTex内核 编辑环境WinEdit 源码如下: \documentclass[a4paper,12pt]{article} \usepackage{CJK} %设定字号 ...

  3. angular路由详解:

    1.$routeProvider ngRoute模块中的服务 2.otherwise:设置用于路由改变时,与任何其他定义的路由无法匹配的时候执行的代码 3.when:为$route服务定义新的路由 例 ...

  4. idea 分支主干管理

    1.创建分支 2.切换主干/分支 3.合并主干.分支

  5. MySQL重置root密码

    1,以管理员身份进入cmd命令行,输入命令:Net stop mysql; 2 ,进入mysql安装目录的bin文件夹下,执行mysqld --skip-grant-tables  启动MySQL S ...

  6. JavaScript常用字符串操作方法总结

    1.判断是否为字符串:typeof() var str = 'abcd'; typeof(str);   //string 2.获取字符串的长度:length var str = '123456789 ...

  7. 【转】arm 开发工具比较(ADS vs RealviewMDK vs RVDS)

      ADS REALVIEW MDK RVDS 公司 ARM Keil(后被ARM收购) ARM 版本 最新1.2 ,被RVDS取代 最新4.0 是否免费 破解情况 有 有 工程管理 CodeWarr ...

  8. JIRA FOR LINUX 安装过程

    1.Download 官网下载地址:https://www.atlassian.com/software/jira/download,只看到window下的安装版本,这个时候需要点击? All JIR ...

  9. ubuntu pycharm 无法 lock from launcher 问题解决

    ubuntu pycharm 无法 lock from launcher 问题解决 最近在自己电脑上安装了python的IDE pycharm, 发现在dash也无法搜索到pycharm的启动图标.( ...

  10. python 学习笔记7 面向对象编程

    一.概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发"更快更好更强..." ...