public static int ReadInt(byte[] data,int offset)
{
unsafe
{
int n = 0;
//fixed (byte* p = data)
fixed (byte* p = &data[offset] )
{
n = Marshal.ReadInt32((IntPtr)p );
}
return n;
}
}
{
unsafe
{
int n = 0;
//fixed (byte* p = data)
fixed (byte* p = &data[offset] )
{
n = Marshal.ReadInt32((IntPtr)p );
}
return n;
}
}
一直以为c#没有c的memcpy 的直接内存拷贝.最近需要给c#方的程序员发送socket数据.他小白,我只好找方法.结果找到了.
struct stC
{
int a;
int b;
char msg[128];
};
int a = ReadInt(bytes,0);
int b = ReadInt(bytes,4);
String data2 = System.Text.Encoding.Default.GetString(bytes, 8, i);
Console.WriteLine("前4 [{0}] 后4 [{1}] 字符串[{2}]", a, b, data2);
传送的结构体是开头2个int 后面是msg消息字符串. bytes是NetworkStream Read的buffer.
记得工程要设置允许不安全代码