• 以前工作总结


    1.文件的上传与下载:

    上传:

    //FileUpload1是aspx页面的一个FileUpload控件

    UpDownFile.UpDownFile up = new UpDownFile.UpDownFile();

    up.Up(ConvertStreamToByteBuffer(FileUpload1.PostedFile.InputStream),

    FileUpload1.PostedFile.FileName.Substring(FileUpload1.PostedFile.FileName.LastIndexOf("\") + 1));

    下载:

    UpDownFile.UpDownFile down = new UpDownFile.UpDownFile();

    byte file = down.Down(Request.QueryString"filename".ToString()); //filename是要下载的文件路径,可自行以其它方式获取文件路径

    Response.BinaryWrite(file);

    以下是将文件流转换成文件字节的函数(因为Stream类型的是不能直接通过WebService传输):

    protected byte] ConvertStreamToByteBuffer(Stream s)
    {
      BinaryReader br = new BinaryReader(stream);

      byte fileBytes = br.ReadBytes((int)stream.Length);

      return fileBytes;

    }

    2.atoi与atof等的使用。

    CString strData = _T("");

    int nData = atoi(strData);

    double dData = atof(strData);

    3.CString的使用,其中Find(),Mid(),Left()尤为重要,明白它们的返回值,请仔细看看。

    Find()返回为整型,Mid()与Left()返回为字符串,

    Left()是取字符串中第几个位置的左面字符串。

    Mid(+1)是取字符串中第几个位置(包括这个位置)的右面字符串。

    strSendString.ReverseFind();从后面开始查找

    4.指针与数组的使用。

    总结下指针和数组的区别:

    以字符数组为例简单说明下数组与指针之间的区别:

    1). char a[3];

    2). char *b=new char[size];

    3). const char *c;

    4). string d;

    相同点:a,b,c,d都表示的是地址;

    不同点:

    (1). a3]只能放三个字符数据,*b则不受大小限制,可以存放许多字符变量,大小根据size的大小确定;

    (2). b在定义时一定要分配内存空间,否则程序会产生未知错误,因为计算机不知道该指针指向哪儿,如果指向了一个正在运行的程序,程序就是崩掉;

    (3) *c也不受大小限制,与*b的区别是b的值能改变,可以指向其他字符地址,但c的地址不能改变,因为是常指针变量。

    (4) d也不受大小限制,而且可以根据字符个数的多少来动态的分配内存空间;

    (5). b 和c 的区别是b 能通过指针变量所指向地址的变化来改变其变量的值,但c不能。

    5.memcpy(void*,const void*,size_t);的使用。把一段缓冲区负责到另一段缓冲上按照长度。

    例子://把hello复制给str

    memcpy(str,hello,sizeof(hello));

    memcpy提供了一般内存的复制。即memcpy对于需要复制的内容没有限制,因此用途更广。

    void *memcpy( void *dest, const void *src, size_t count );

    6.内存地址sscanf();写个解析例子。

    sscanf(strGood,"%s",&nCountT);把一个字符转为10进制数

    sscanf(strGood,"%x",&nCountT);把一个16进制数转为10进制数

    7.cFile.isDirectory()&&cFile.isDots()判断文件目录

    8.原 浮点数用十六进制表示方式附C代码(float浮点转化)

    浮点数用十六进制表示;我这里遇到的问题是知道数值,但需要把数值发送到上位机里显示波形,但是上位机是以浮点数的存储格式来解析的,但是我的单片机不支持float类

    型,所以我的需求是把已知的数值看做是浮点数,然后把该数值以浮点数的存储方式存储到另外的一个变量,所以我的代码是把已知的数值用浮点数的存储方式表示出来,或者

    说是计算已知数值的浮点数值。

    举例:已知一个数为12,他的浮点数表示为 41400000h,我的目的就是把通过12计算出41400000h。

    先说明下浮点数的存储原理,是网上别人写的,找不到连接了,把他说的先放前面

    在二进制文件中,存储数据的格式为16进制,

    下面举例说明27.0f在二进制文件中怎么表示。

    float

    共计32位,折合4字节

    由最高到最低位分别是第31、30、29、……、0位

    31位是符号位,1表示该数为负,0反之。

    30-23位,一共8位是指数位。

    22-0位,一共23位是尾数位。

    每8位分为一组,分成4组,分别是A组、B组、C组、D组。

    每一组是一个字节,在内存中逆序存储,即:DCBA

    27.0表示成二进制为:11011.0

    用科学计数法表示为1.10110*2^4,现在我们要的尾数和指数都出来了。

    尾数为:1101 10 (删除前面的第一个1,因为用科学计数法表示,二进制中第一个永远都为1,计算机在存储的时候就没有存储这个1,只存储小数点后面的位数)   不足23

    位,补0,就是1011 0000 0000 0000 0000 000(23位)

    指数:为4 。一共8位,可以表示范围是0 ~ 255的无符号整数,也可以表示-128~127的有符号整数。但因为指数是可以为负的,所以为了统一把十进制的整数化为二进制时,都

    先加上127。

    所以:4+127=131  变成二进制就是10000011

    27.0用二进制表示就是:

    加上第31位的符号位0

    就是0100 0001 1101 1000 0000 0000 0000 0000

    十六进制就是:41 D8 00 00

    再看一个数27.5,二进制为11011.1

    1.10111*2^4

    尾数(小数点后的数)10111,补够23位 1011 1000 0000 00000000 000

    指数:4,加上127,就是131,二进制1000 0011

    用二进制表示就是 (符号数位1位)0 (指数位8位)1000 0011 (尾数位23位)1011 1000 0000 00000000 000

    写成二进制标准形式:0100 00011101 1100 0000 0000 0000 0000

    写成16进制就是41 DC 00 00

    此方法解析为:

    char chData[10] = {0};

    chData[0] = lpszResp[nHead + 10];

    chData[1] = lpszResp[nHead + 9];

    chData[2] = lpszResp[nHead + 8];

    chData[3] = lpszResp[nHead + 7];

    float* fData = (float*)chData;

    double dData = (double)(*fData);

    9.十进制转为十六进制代码:

    char chPres8] = {0};

    chPres0] = lpszResp[nHeadPos +53];A

    chPres1] = lpszResp[nHeadPos +54];a

    chPres2] = lpszResp[nHeadPos +55];2

    chPres3] = lpszResp[nHeadPos +56];3

    int i,m,temp=0,n;

    m=strlen(chPres);

    for(i=0;i<m;i++)
    {
      if(chPres[i]>='A'&&chPres[i]<='F')
      n=chPres[i]-'A'+10;
      else if(chPres[i]>='a'&&chPres[i]<='f')
      n=chPres[i]-'a'+10;
      else n=chPres[i]-'0';
      temp=temp*16+n;
    }

    double dPres = temp/10.0;

    10..定时器设置:

    //参数设置dwStartTime是开始执行程序,dwEndTime是定时时间

    BOOL JudgeTimer(DWORD dwStartTime,DWORD dwEndTime)

    {
      DWORD dwCurTime = GetTickCount();

      if (dwStartTime <= dwEndTime)
      {
        if (dwCurTime >= dwEndTime|| dwStartTime > dwCurTime)
        {
          return TRUE;
        }
      }
      else
      {
        if (dwCurTime < dwStartTime&& dwCurTime >= dwEndTime)
         {
          return TRUE;
        }
      }
      return FALSE;

    }

                          改变自己,从现在做起-----------久馆

  • 相关阅读:
    git的merge功能
    linux实用命令
    记录maven的一些命令
    java模拟报文
    spring boot利用swagger和spring doc生成在线和离线文档
    java将类和函数封装成jar
    spring cloud微服务搭建(一)
    linux根目录扩容
    快速上手UIView动画
    PHP变量
  • 原文地址:https://www.cnblogs.com/zzw19940404/p/14054661.html
Copyright © 2020-2023  润新知