以前工作总结

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;

}

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

原文地址:https://www.cnblogs.com/zzw19940404/p/14054661.html