码迷,mamicode.com
首页 > 编程语言 > 详细

C#调用C++ memcpy实现各种参数类型的内存拷贝

时间:2017-06-17 19:34:41      阅读:357      评论:0      收藏:0      [点我收藏+]

标签:try   blog   拷贝   byte   div   数组   pre   err   false   

using System;
using System.Runtime.InteropServices;
using System.IO;
namespace tx
{
    struct ST
    {
       public char c1;
       public int x;
       public int y;
    }
    class Ct
    {
        [DllImport("msvcrt.dll", EntryPoint = "memcpy", CallingConvention = CallingConvention.Cdecl, SetLastError = false)]
        public static extern void MemCopy(byte[] dest, byte[] src, int count);//字节数组到字节数组的拷贝

        [DllImport("msvcrt.dll", EntryPoint = "memcpy", CallingConvention = CallingConvention.Cdecl, SetLastError = false)]
        public static extern void MemCopy(int[] dest, byte[] src, int count);//字节数组到整形数组的拷贝

        [DllImport("msvcrt.dll", EntryPoint = "memcpy", CallingConvention = CallingConvention.Cdecl, SetLastError = false)]
        public unsafe static extern void MemCopy(ref ST dest, byte[] src, int count);//注意只有结构体能这么做,class不可以

        static void Main(string[] args)
        {
            //测试----------------------------------------------
            var ms = new MemoryStream();
            BinaryWriter writer = new BinaryWriter(ms);
            writer.Write((byte)a);
            writer.Write((byte)b);
            writer.Write((byte)c);
            writer.Write((byte)d);
            writer.Write((Int32)10);
            writer.Write((Int32)30);
            var len = ms.Length;
            int[] bs = new int[len/4];
            byte[] bss = new byte[len];

            byte[] buf = ms.GetBuffer();
            var ot = new ST();
            MemCopy(bs, buf, (int)len);
            MemCopy(bss, buf, (int)len);
            MemCopy(ref ot, buf, (int)len);//注意只有结构体能这么做,class不可以
        }

    }

}

 

C#调用C++ memcpy实现各种参数类型的内存拷贝

标签:try   blog   拷贝   byte   div   数组   pre   err   false   

原文地址:http://www.cnblogs.com/timeObjserver/p/7040966.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!