標籤: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實現各種參數類型的記憶體拷貝