好的函數總結

1、數組的循環左移
Void Leftshift(int *s,int n,int t)//*s輸入的數組,n數組的大小,t左移的字節數
{
int i,tmp;
tmp=s[0];
for(;t>0;t–)
{
tmp=s[0];
for(i=0;i<n-1;i++)
{
s[i]=s[i+1];
}
s[n-1]=tmp;
}
}

2、數組的循環右移
void ReghtShift(int *arr,int N,int K)//*arr輸入的數組,N數組的大小,K右移字節數
{
while(K–)
{
int t =arr[N-1];
for(int i=N-1;i>0;i–)
{
arr[i] =arr[i-1];
}
arr[0]=t;
}
}
3、兩個數組對應字節比較大小
unsigned char MuchCompare(unsigned char *pint,unsigned char *pout,unsigned char len)
{
unsigned char Cflag=0;
for(;len>0;len–)
{
if(*pint>*pout)
{
Cflag=1;
break;
}
else if(*pint<*pout)
{
break;
}
else
{
pint++;
pout++;
}
if(len==0)
Cflag=1;
}
return Cflag;
}

4、Char轉換爲hex
void CharToHex(unsigned char *InChar,unsigned char *OutHex,unsigned char len)
{
unsigned char i=0;
for(i=0;i<len;i++)
{
if((InChar[i]>=‘0’)&&(InChar[i]<=‘9’))
{
InChar[i] = InChar[i] -‘0’;
}
else if((InChar[i]>=‘a’)&&(InChar[i]<=‘f’))
{
InChar[i] = InChar[i] -‘a’+10;
}
else if((InChar[i]>=‘A’)&&(InChar[i]<=‘F’))
{
InChar[i] = InChar[i] -‘A’+10;
}
if(i%2)
{
OutHex[i/2] = (InChar[i-1]<<4)+InChar[i];
}
}
}

5、BCD碼轉換爲HEX

BCD轉換爲HEX
unsigned char BCD_HEX(unsigned char bcd_u)
{
return ((bcd_u >>4) *10) +(bcd_u &0x0f);
}

6、HEX轉換爲BCD

unsigned char HEX_BCD(unsigned char hex_u)
{
return ((hex_u/10) *16 + hex_u%10);
}

7、BCD碼轉換爲十進制
/***************************************************************
*名稱:uint8 bcd2dec(uint8 bcd)
*參數:無
*功能:BCD碼轉換爲十進制
**************************************************************/
unsigned char bcd2dec(unsigned char bcd)
{
return (bcd & 0x0f) + (((bcd & 0xf0)>>4)*10);
}

7、兩個6位字節的BCD加法
/****************************************************************************
//兩個6位字節的BCD加法
//pint加數,pout爲被加數
//結果存pint中
******************************************************************************/
void add_bcd_six_byte(unsigned char *pint,unsigned char *pout,unsigned char len)
{
unsigned char i,y;
unsigned char carry_flag=0;
for(;len>0;len–)
{
i=(*pint&0x0f)+(*pout&0x0f)+carry_flag;
//判斷低位是大於0A 操作
if(((*pint&0x0f)+(*pout&0x0f)+carry_flag)>=0x0a)
{
i=(*pint&0x0f)+(*pout&0x0f)+carry_flag+6;
carry_flag=0;
if(((*pint&0xf0)+(*pout&0xf0)+0x10)>=0xa0)
{
y=(*pint&0xf0)+(*pout&0xf0)+0x70;
carry_flag=1;
}
else
{
y=(*pint&0xf0)+(*pout&0xf0)+0x10;
y&=0xf0;
carry_flag=0;
}
i&=0x0f;
y&=0xf0;
*pint=i|y;
}
else
{
if(((*pint&0xf0)+(*pout&0xf0))>=0xa0)
{
y=(*pint&0xf0)+(*pout&0xf0)+0x60;
carry_flag=1;
}
else
{
y=(*pint&0xf0)+(*pout&0xf0);
carry_flag=0;
}
i&=0x0f;
y&=0xf0;
*pint=i|y;
}
pint–;
pout–;
}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章