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)); writer.Write((byte)'w');
writer.Write((byte)'b');
writer.Write((byte)'c');
writer.Write((byte)'d');
writer.Write((float));
writer.Write((Int32));
var len = ms.Length;
int[] bs = new int[len/];
byte[] bss = new byte[len]; byte[] buf = ms.GetBuffer();
var ot = new ST();
ST[] aot = new ST[];
Buffer.BlockCopy(buf, , bs, , (int)ms.Length);
//Buffer.BlockCopy(buf, 0, aot, 0, (int)ms.Length);//错误,blockcopy只能用于基元数组
MemCopy(bss, buf, (int)len);
MemCopy(ref ot, buf, (int)len/);//注意只有结构体能这么做,class不可以
MemCopy(ref aot[], buf, (int)len); byte[] sub = new byte[]; } } }

Memcpy, blockcopy的进一步理解的更多相关文章

  1. Java内存管理的进一步理解-模拟过程图解

    Java内存管理的进一步理解-模拟过程图解--转载 java的内存管理分为: 1.堆内存:2.栈内存:3.方法区:4.本地方法区 /* 1:方法区      方法区存放装载的类数据信息包括:      ...

  2. 对于python装饰器结合递归的进一步理解

    对于python装饰器结合递归的进一步理解 代码如下: import functools def memoize(fn): print('start memoize') known = dict() ...

  3. 对iOS后台模式最多10分钟运行时间的进一步理解

    在app进入后台时,系统初始默认是只有10s的处理时间,但如果10s不够,我们可以主动申请,网上流传最多的一个说法是10分钟. 但这种说法有个前提: 那就是iOS7之前,是这样 但从iOS7开始,我们 ...

  4. AutoResetEvent waitone set进一步理解补充

    AutoResetEvent 的定义 //定义两个信号锁 AutoResetEvent ReadTxt = new AutoResetEvent(false); AutoResetEvent Uplo ...

  5. 对Java中字符串的进一步理解

    字符串在程序开发中无处不在,也是用户交互所涉及到最频繁的数据类型,那么字符串不仅仅就是我们简单的理解的String str = "abc";一起来更加深入的看一下 在Java中,字 ...

  6. 通过回调函数的理解来进一步理解ajax及其注意的用法

    一,再一次理解回调函数 (function($){ $.fn.shadow = function(opts){ //定义的默认的参数 var defaults = { copies: 5, opaci ...

  7. 『cs231n』卷积神经网络的可视化与进一步理解

    cs231n的第18课理解起来很吃力,听后又查了一些资料才算是勉强弄懂,所以这里贴一篇博文(根据自己理解有所修改)和原论文的翻译加深加深理解,其中原论文翻译比博文更容易理解,但是太长,而博文是业者而非 ...

  8. 关于iOS 类扩展Extension的进一步理解

    很多人可能会问  iOS的分类和扩展的区别,网上很多的讲解,但是一般都是分类讲的多,而这也是我们平常比较常用的知识:但是,对于扩展,总觉得理解的朦朦胧胧,不够透彻. 这里就讲一下我自己的理解,但是这个 ...

  9. KVO 的进一步理解

    这篇文章讲述了KVO的深入理解 http://blog.csdn.net/kesalin/article/details/8194240 对kvo有了更深入的理解 如下连接的文章讲述了kvo接口的一些 ...

随机推荐

  1. FindBugs插件的安装与使用

    转载:http://www.cnblogs.com/kayfans/archive/2012/06/18/2554022.html 1 什么是FindBugs FindBugs 是一个静态分析工具,它 ...

  2. 045——VUE中组件之父组件使用scope定义子组件模板结构

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. bzoj4811

    题解: 对于每一个节点,我们建立v0,v1 v0表示0进过会怎么样 v1表示1进过会怎么样 然后线段树合并 代码: #include <cstdio> #include <cstri ...

  4. 《Drools7.0.0.Final规则引擎教程》番外实例篇——相同对象and List使用

    前奏 群组(QQ:593177274)交流中有朋友提出一个问题,怎么实现两个相同对象的插入和比较?相信很多朋友也遇到类似的问题,于是抽时间为大家写一段实例代码,后续代码会同步到GitHub中.下面简单 ...

  5. ios 加密解密工具类字符判断等

    #import <Foundation/Foundation.h> #import <UIKit/UIKit.h> @interface Helpers : NSObject ...

  6. Linux内核编译技巧

    1.将多个文件编译成一个模块,部分文件可选 Example1: drivers/usb/core/Makefile:usbcore-y := usb.o hub.o hcd.o urb.o messa ...

  7. ballerina 学习二十二 弹性服务

    主要包含断路器模式,负载均衡模式,故障转移,重试 Circuit Breaker 参考代码 import ballerina/http; import ballerina/log; import ba ...

  8. FastAdmin 的 url 有一个 ref=addtabs 是怎么添加的?

    FastAdmin 的 url 有一个 ref=addtabs 是怎么添加的? 在使用 FastAdmin 时你会发现 url 中有一个 ref=addtabs . 以下是 Karson 的解释 这个 ...

  9. aop学习

    拦截器和过滤器的区别:https://blog.csdn.net/heyeqingquan/article/details/71482169 1,aop是一个编程思想,不是具体的实现,一般有Filte ...

  10. docker挂载本地目录和数据卷容器

    1.docker挂载本地目录 docker可以支持把一个宿主机上的目录挂载到镜像里. 交互模式运行docker run -it -v /home/dock/Downloads:/usr/Downloa ...