亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? public.c

?? 稅控收款機源碼:拼音輸入法,LCD,VFD驅動,IC卡驅動,稅控國標
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*-------------------------------------------------------------
	說明:公用的轉換、鍵盤處理功能函數
	日期:2003年5月
    作者:
-------------------------------------------------------------*/
#include "include.h"

/*測試用函數*/

//=========================================================================================
/*void testf(uchar row,uchar* str)
{
	clear_lcd(row,1);
	lcd_disp(row,0,str);
	while(!get_key());
}*/
/********************************************
檢查兩數相乘是否有溢出
********************************************/
uchar is_mul_overflow(ulong x,ulong y)
{
	ulong z;
   //2005.11.25
	z=a_mul_b(x,y,1);
	//t=a_div_b(z,x);
    //send_str(4,&z);send_str(4,&t);
   //if(((t>y)&&(t>(y+1)))||((y>t)&&(y>(t+1))))return(1);//防止有4舍5入的問題
   if(z==0)return(1);
		
	return(0);
}
/********************************************
檢查兩數相加是否有溢出
********************************************/
uchar is_add_overflow(ulong x,ulong y)
{
	ulong z;
	z=x+y;
	if(z-x!=y)
		return(1);
	return(0);
}
/***********************************************
拷貝字符串,并在前面(before!=0時)或后面補空格
************************************************/
void copy(uchar* src,uchar * dst,uchar len,uchar before)
{
	uchar src_len,i;
	src_len=strlen((const char *)src);
	if(before) //前面補空格
	{
        //send_char(src_len);
        //send_char(len);
		if(src_len>=len)
			memcpy(dst,src,len);
		else
		{
			for(i=0;i<len-src_len;i++)
				dst[i]=' ';
			memcpy(&dst[i],src,src_len);
		}
	}
	else //后面補空格
		for(i=0;i<len;i++)
		{
		
			if(src_len<=i)
				dst[i]=' ';//補空格
			else
				dst[i]=src[i];
		}
	dst[len]=0;
		
}
/*********************************************
 函數功能: 計算LRC校驗和
 入口參數: length 參加運算數據長度,不包含待校驗的LRC 
            calc為1則表示只計算,為0則表示計算后比較
			buffer 數據地址指針
            			 
 返回值:   若為計算,則返回計算后的校驗值;
            若為比較,相等返回0,否則為1
 作者:
/*********************************************/
uchar lrcdata(uint length,uchar calc,void *buffer)
{
	uchar lrc;
	uint i;
	lrc=0;
	for(i=0;i<length;i++)
		lrc^=((uchar *)buffer)[i];
	if(calc)
		return(lrc);
	else
		if(lrc==((uchar *)buffer)[length])
			return(0);
	else return(1);
}

/*********************************************
 函數功能: 給給定緩沖區清0
 入口參數: buf,賦值前的緩沖區;len,長度
            
 出口參數: buf,賦值后的緩沖區
 返回值  :無
 作者:
/*********************************************/
void set_value0(void *buffer,uint len)
{
	uint i;
	for(i=0;i<len;i++)
	{
		*((uchar*)buffer)=0;
		((uchar*)buffer)++;
	}
}
//===============================================
ulong mypow(ulong base,uint times)
{
	ulong num;
	uint i;
	if(times==0)
		return(1);
	num=1;
	for(i=0;i<times;i++)
		num*=base;
	return(num);
}


/*********************************************
功能:將數組中的字節按高低順序轉換為長整型
	  如buf[0]=0x10,buf[1]=0x20,buf[2]=0x30,buf[3]=0x40
 	  則轉換后的值為0x10203040
入口參數:buf,待轉換的數據,len,待轉換的數據字節數
返回值  :轉換后的值
作者:

***************************************/
ulong ToLong(uchar * buf,uchar len)
{
	uchar i;
	ulong value;
	value=0;
	for(i=0;i<len;i++)
		value+=buf[i]*mypow(0x10,2*(len-1)-2*i);
	return(value);
}

/*********************************************
功能:將4個字節長整型轉換為4個字節的數組
	  如0x10203040,轉換后的值為output[0]=0x10,output[1]=0x20,
	                            output[2]=0x30,output[3]=0x40
入口參數:long,待轉換的長整數,len,待轉換的數據字節數
出口參數:output,轉換后的4個字節的數組的首地址
返回值  :無
作者:

***************************************/
void ltoa(ulong value,uchar * output)
{
	uchar i;
	for(i=0;i<4;i++)
		output[i]=value >> ((3-i)*8);
}
/*********************************************
功能:將4字節長整型轉換為大寫字符串,
      如將12345678轉換為"壹拾貳萬叁仟四佰五拾陸元柒角捌分"
入口參數:  vale,待轉換的數值
出口參數  :output,轉換后的字符串的首地址
返回值  :無
作者:

***************************************/
void convert_cap(ulong value,uchar * output)
{
	const uchar cap[]={"仟佰拾"},cap2[]={"億萬元"};
	uchar buf[20];
	uchar i,j,tmp,flag;

	j=0;
	flag=255;
	sprintf((char *)buf,"%012lu",value/100);
	for(i=0;i<12;i++)
	{
		tmp=buf[i]-0x30;
		if(tmp)
		{
			memcpy(&output[j],&capitalization[2*tmp],2);
			j+=2;
			if((i+1)%4)
			{
				memcpy(&output[j],&cap[i%4*2],2);
				j+=2;
			}
			if(i<=3) flag=3; //億
			else if(i<=7) flag=7;  //萬
			//else flag=11;           //元
		}
		if(i==flag)
		{
			memcpy(&output[j],&cap2[((i+1)/4-1)*2],2);
			j+=2;
		}

	}
   // 2005.8.14
   if(value/100)
   {
	if(j==0)
	{
		memcpy(output,"零",2);
		j+=2;
	}
    
	memcpy(&output[j],"元",2);
	j+=2;
    }
	//小數部分
	value=value%100;
	if(value==0)
	{
		memcpy(&output[j],"整",2);
		output[j+2]=0;
		return;
	}
	tmp=value/10;
	if(tmp)
	{
		memcpy(&output[j],&capitalization[2*tmp],2);
		j+=2;
		memcpy(&output[j],"角",2);
		j+=2;
	}
	tmp=value%10;
	if(tmp)
	{
		memcpy(&output[j],&capitalization[2*tmp],2);
		j+=2;
		memcpy(&output[j],"分",2);
		j+=2;
	}
	output[j]=0;

}

/* 入口參數:a和b是放大了100倍的長整型數
   返回值:a和b縮小100倍后的乘積,也是放大了100倍的長整型數
*/
/*
ulong a_mul_b(ulong a,ulong b,uchar mode)
{
	ulong a1,a2,b1,b2;
	ulong t;
    ulong x;
	//ulong y;
    uchar times;

   
		 
	b1=b/100,b2=b%100; //b的整數部分和小數部分,小數部分乘了100
	if(mode==0)
	{
	 a1=a/100,a2=a%100; //a的整數部分和小數部分,小數部分乘了100
	 t=a1*b1*100+a1*b2+a2*b1+a2*b2/100;
	 if((a2*b2%100)>=50)t++;//4舍5入
	}
	else
	 {
	  times=a>>24;
	  a&=0xffffff;
	  if(times>0)
	   {
	     x=mypow(10,times);
 	     a1=a/x,a2=a%x; //a的整數部分和小數部分,小數部分乘了
		 
	   	 if(times>2)
	       {
	         x=mypow(10,times-2); 
	         t=a1*b1*100+(a1*b2)+(a2*b1)/x+(a2*b2)/(100*x);//t=a1*b1*100+(a1*b2)+(a2*b1*100+a2*b2)/(100*x);
			 //y=(((a2*b2)%(100*x))/100);
             //if((((a2*b2)%(100*x))%100)>=50)y++;
			 if(((((a2*b1)%x)*100+(a2*b2)%(100*x))%(100*x))>=(x*50))t++;//if(((a2*b1*100+a2*b2)%(100*x))>=(x*50))t++;
			
	       }
		 else if(times==2)
		  {
		    t=a1*b1*100+a1*b2+a2*b1+a2*b2/100;
	        if((a2*b2%100)>=50)t++;//4舍5入
		  }
		  else
		  {
		   t=a1*b1*100+a1*b2+a2*b1*10+a2*b2/10;
           if((a2*b2%10)>=5)t++;//4舍5入
		  }
	   }
	   else t=a*b1*100+a*b2; //整數*一個小數
	 }
	 
    return(t);
}*/
/*
ulong a_mul_b(ulong a,ulong b,uchar mode)
{
	ulong a1,a2,b1,b2;
	ulong t;
    ulong x;
	//ulong y;
    uchar times;
		 
	b1=b/100,b2=b%100; //b的整數部分和小數部分,小數部分乘了100
	if(mode==0)
	{
		a1=a/100,a2=a%100; //a的整數部分和小數部分,小數部分乘了100
		t=a1*b1*100+a1*b2+a2*b1+a2*b2/100;
		if((a2*b2%100)>=50)t++;//4舍5入
	}
	else
	{
		times=a>>24;
		a&=0xffffff;
		x=mypow(10,times-1);
		if(times)
			t = (1.0*a*b/x+5)/10;
		else
			t = 1.0*a*b;
	}
    return(t);
}*/

ulong a_mul_b(ulong a,ulong b,uchar mode)
{
	ulong a0,a1,a2,b1,b2;
	ulong t,t1,t2,t3,t4;
    ulong x;
	uchar times,i,j;
	if(mode==0)
	{
		a1=a/100,a2=a%100; //a的整數部分和小數部分,小數部分乘了100
		t=a1*b1*100+a1*b2+a2*b1+a2*b2/100;
		if((a2*b2%100)>=50)t++;//4舍5入
	}
	else
	{
		a0 = a&0x00ffffff; 
		times = a>>24;
		a1 = a0>>16;
		a2 = a0&0x0000ffff;
		b1 = b>>16;
		b2 = b&0x0000ffff;

		t1 = a1*b1;
		t2 = b1*a2;
		t3 = a1*b2;
		t4 = a2*b2;
		
		if(t1>0x01||t2>0xffff||t3>0xffff||(t2+t3>0xffff))
		{
			t1 = t1 + (t2>>16) + (t3>>16);
			t = (t2<<16) + (t3<<16) + t4;
			a0 = t1;
			i = 0;
			do
			{
				i++;
				a0 = a0 / 16;
				if(a0==0)
					break;
			}while(1);
		}
		else
		{
			t = (t2<<16) + (t3<<16) + t4;
		}
		
		if(times)
		{
			x=mypow(10,times-1);
			
			//t2 = (t1<<(32-i*4))/x;
			//t3 = (t1<<(32-i*4))%x;
			
			//t2 = t2<<(4*i);
			//t3 = (t3<<(4*i))/x;
			//t = t/x;
			//t = t+t2+t3;

			t = t/x;
			for(j=0;j<i;j++)
			{
				t2 = (((t1>>(j*4))&0xff)<<28)/x;
				t3 = (((t1>>(j*4))&0xff)<<28)%x;
				t2 = t2<<(4*(j+1));
				t3 = (t3<<(4*(j+1)))/x;
				t =  t+t2+t3;
			}
			
			t = (t + 5)/10; //四舌五入
		}
	}
	return(t);
}

//==================================================================
ulong a_div_b(ulong a,ulong b)
{
	ulong t;
	t=a/b*100+a%b*100/b;
	if(((((a%b*100)%b)*100)/b)>=50) t++;	//4舍5入
		return(t);
}
/********************************************
將形如 "AB09CD"作為16進制串每2個字符分別轉換(如AB,09,CD)為字節類型
入口參數:str,以\0為結束符的字符串
出口參數:output,轉換后的沒有結束符的字符指針
返回值  :轉換正確為0,否則返回其他錯誤
作者:
********************************************/
uchar HexToByte( uchar * str,uchar * output)
{
	uchar len;
	uchar i,j;
	uchar tmp[2];
	len=strlen((const char*)str);
	if(len % 2 )
		return(PARAM_FAIL);
	len /=2;
	for(i=0;i<len;i++)
	{
		tmp[0]=str[2*i];
		tmp[1]=str[2*i+1];
		output[i]=0;
		for(j=0;j<2;j++)
		{
			switch(tmp[j])
			{
			case '0':
			case '1':
			case '2':
			case '3':
			case '4':
			case '5':
			case '6':
			case '7':
			case '8':
			case '9':
				output[i]+=(tmp[j]-0x30)*(j==0?0x10:1);
				break;
			case 'A':
			case 'a':
				output[i]+=10*((j==0?0x10:1));
				break;
			case 'B':
			case 'b':
				output[i]+=11*((j==0?0x10:1));
				break;
			case 'C':
			case 'c':
				output[i]+=12*((j==0?0x10:1));
				break;
			case 'D':
			case 'd':
				output[i]+=13*((j==0?0x10:1));
				break;
			case 'E':
			case 'e':
				output[i]+=14*((j==0?0x10:1));

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人aaa| 日韩精品中文字幕一区二区三区| 色婷婷久久久亚洲一区二区三区| 欧美肥胖老妇做爰| 亚洲欧美综合色| 久久精品国产免费| 91成人免费网站| 国产午夜久久久久| 青青草97国产精品免费观看| 91丨九色丨尤物| ww亚洲ww在线观看国产| 视频一区二区中文字幕| 99精品欧美一区二区三区综合在线| 日韩一区二区高清| 亚洲一区在线看| 91麻豆精品视频| 国产精品美女久久福利网站| 国内不卡的二区三区中文字幕 | 中文字幕在线不卡国产视频| 九一久久久久久| 在线播放91灌醉迷j高跟美女 | 欧美性生活影院| 亚洲美女在线国产| 91免费国产视频网站| 国产精品视频一二三| 国产乱人伦精品一区二区在线观看| 3atv在线一区二区三区| 丝袜亚洲精品中文字幕一区| 欧美精品在线视频| 午夜精品福利久久久| 欧美日韩不卡视频| 日韩综合在线视频| 91精品国产综合久久久久久漫画 | 成人福利视频在线看| 久久久国产精华| 国产精品77777| 久久久久99精品国产片| 国产精品99久久久久久久vr| 久久精品人人做人人爽人人| 国产成人av影院| 国产精品久久久久久久蜜臀| 99久久综合狠狠综合久久| 一区精品在线播放| 欧美在线免费观看视频| 日韩vs国产vs欧美| 精品国产欧美一区二区| 国产高清一区日本| 免费成人美女在线观看.| 欧美一区二区福利在线| 久久99久久久久久久久久久| 久久综合精品国产一区二区三区 | 91精品国产一区二区三区| 日本不卡视频一二三区| 337p粉嫩大胆色噜噜噜噜亚洲| 国产91精品久久久久久久网曝门| 亚洲国产精品成人综合色在线婷婷| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 亚洲国产精品ⅴa在线观看| 成人免费高清在线| 一区二区三区中文字幕精品精品| 欧美日韩日日夜夜| 老鸭窝一区二区久久精品| 国产亚洲欧美在线| 色一情一乱一乱一91av| 久久国产精品72免费观看| 一区精品在线播放| 7799精品视频| k8久久久一区二区三区| 日韩黄色在线观看| 日本一区二区成人| 欧美狂野另类xxxxoooo| 国产成人在线视频网站| 亚洲国产一区二区三区青草影视| 精品国产人成亚洲区| 91久久国产综合久久| 久久99在线观看| 亚洲免费av网站| 国产视频一区二区在线观看| 欧美日韩黄色影视| 成人免费毛片a| 免费在线观看精品| 亚洲免费观看高清在线观看| 精品噜噜噜噜久久久久久久久试看| 91视频91自| 国产在线观看一区二区| 无吗不卡中文字幕| 亚洲欧美色图小说| 国产日韩精品一区| 精品卡一卡二卡三卡四在线| 欧美少妇bbb| 色噜噜久久综合| 成人免费看视频| 激情综合五月天| 性做久久久久久免费观看| 综合婷婷亚洲小说| 欧美国产日韩一二三区| 久久精子c满五个校花| 宅男噜噜噜66一区二区66| 在线免费精品视频| av中文字幕不卡| 成人精品高清在线| 国产激情一区二区三区| 麻豆91免费看| 免费观看在线综合色| 五月婷婷激情综合网| 亚洲综合久久久久| 一区二区高清视频在线观看| 最新日韩在线视频| 国产精品色眯眯| 久久久久成人黄色影片| 国产午夜精品一区二区三区嫩草| 精品女同一区二区| 精品国产乱码91久久久久久网站| 911精品产国品一二三产区| 欧美日韩成人在线一区| 欧美日韩久久不卡| 欧美日韩和欧美的一区二区| 欧美在线制服丝袜| 欧美日韩在线亚洲一区蜜芽| 欧美日韩精品三区| 4438x成人网最大色成网站| 91麻豆精品国产自产在线观看一区 | 日韩一本二本av| 精品欧美乱码久久久久久1区2区| 精品国产一区二区三区av性色 | 欧美一级高清片| 日韩欧美国产一区二区在线播放| 欧美mv日韩mv| 欧美激情一区二区| 亚洲精品第1页| 日本成人在线网站| 国产精品自拍三区| 97成人超碰视| 欧美精品色一区二区三区| 精品国产在天天线2019| 国产偷v国产偷v亚洲高清| 国产欧美日韩不卡| 亚洲精品菠萝久久久久久久| 天堂一区二区在线| 韩国成人在线视频| 91农村精品一区二区在线| 欧美日韩视频不卡| 久久久久免费观看| 亚洲综合成人在线| 久久成人av少妇免费| 成人丝袜视频网| 欧美日韩一区 二区 三区 久久精品| 91精品国产色综合久久| 国产人久久人人人人爽| 一区二区三区高清| 久久精品久久99精品久久| 99久久综合国产精品| 日韩一区二区不卡| 国产精品不卡在线| 日韩激情视频在线观看| 白白色亚洲国产精品| 666欧美在线视频| 国产精品理论片| 日产精品久久久久久久性色| 国产91在线观看丝袜| 91麻豆精品国产自产在线观看一区| 国产欧美一区二区三区鸳鸯浴| 亚洲一区二区三区四区的| 国产黄色成人av| 91精品国产综合久久香蕉的特点 | 91丨国产丨九色丨pron| 精品国产制服丝袜高跟| 亚洲大片精品永久免费| 成人中文字幕合集| 欧美一级欧美三级在线观看| 亚洲人快播电影网| 激情欧美日韩一区二区| 欧美视频一区在线| 亚洲视频在线观看三级| 国产一区在线观看视频| 欧美精品第1页| 一区二区三区成人在线视频| 不卡一区中文字幕| 久久美女艺术照精彩视频福利播放| 亚洲成人av在线电影| 色94色欧美sute亚洲13| 最新不卡av在线| 国产一区91精品张津瑜| 日韩欧美一二三| 日韩av高清在线观看| 欧美日韩在线播放一区| 亚洲素人一区二区| 成人激情视频网站| 久久精品欧美日韩精品| 国产一区在线精品| 久久婷婷国产综合精品青草 | 国产午夜精品福利| 狠狠色丁香久久婷婷综合_中 | 欧美情侣在线播放| 一区二区在线免费| 一道本成人在线| 亚洲黄色小说网站| 色视频成人在线观看免| 亚洲欧美成人一区二区三区| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 |