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不可以 } } }
时间: 2024-10-23 17:57:06