using System;using System.Runtime.InteropServices;using System.IO;namespace tx{ struct ST { public byte c1; public float 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不可以 [DllImport("msvcrt.dll", EntryPoint = "memcpy", CallingConvention = CallingConvention.Cdecl, SetLastError = false)] public static extern void MemCopy(ref byte dest, ref byte src, int count);//字节数组到整形数组的拷贝 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(10.2f); writer.Write((Int32)30); writer.Write((byte)'w'); writer.Write((byte)'b'); writer.Write((byte)'c'); writer.Write((byte)'d'); writer.Write((float)799); writer.Write((Int32)242); var len = ms.Length; int[] bs = new int[len/4]; byte[] bss = new byte[len]; byte[] buf = ms.GetBuffer(); var ot = new ST(); ST[] aot = new ST[2]; Buffer.BlockCopy(buf, 0, bs, 0, (int)ms.Length); //Buffer.BlockCopy(buf, 0, aot, 0, (int)ms.Length);//错误,blockcopy只能用于基元数组 MemCopy(bss, buf, (int)len); MemCopy(ref ot, buf, (int)len/2);//注意只有结构体能这么做,class不可以 MemCopy(ref aot[0], buf, (int)len); byte[] sub = new byte[4]; } }}