好的函数总结

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–;
}
}

猜你喜欢

转载自blog.csdn.net/weixin_42231514/article/details/106188505