整理几个常用的数据处理代码(C语言)
字符转十六进制
//字符转十六进制
char Char_To_Hex(char ch)
{
char C ;
if((ch >= '0') && (ch <= '9'))
C = ch - 0x30 ;
else if((ch >= 'A') && (ch <= 'F'))
C = ch - 'A' + 10 ;
else if((ch >= 'a') && (ch <= 'f'))
C = ch - 'a' + 10 ;
return C ;
}
int to string
//int to string
void itoa (int n, char s[])
{
int i, j, sign;
i = 0;
j = 0;
sign = n;
for (i = 0; i < 10; i++)
{
s[i] = '\0';
}
s[0] = ' ';
if (n < 0)
{
n = -n;
s[0] = '-';
}
/*求数字位数*/
while (sign)
{
j++;
sign = sign / 10;
}
do
{
s[j] = n % 10 + '0';
j--;
}
while ((n /= 10) > 0);
}
根据空格分割字符串
//根据空格分割字符串
int partition(u8 *src, char *par, int pos)
{
int i, j;
i = pos;
//取得一个非空字符
while(src[i] == ' ')
++i;
if(src[i] != '\0')
{
j = 0;
while((src[i] != '\0') && (src[i] != ' '))
{
par[j] = src[i];
++i;
++j;
}
par[j] = '\0';
return i;
}
else
return -1;
}
根据逗号拆分字符串单元
//根据逗号拆分字符串单元
int splitStr(char *str, char separator, char strs[][40])
{
int i = 0, j = 0, n = 0;
for(i = 0; str[i]; ++i)
{
if(str[i] == separator)
{
strs[n++][j] = 0;
j = 0;
}
else strs[n][j++] = str[i];
}
strs[n++][j] = 0;
return n;
}
将一整串字符串中的数字转换成ASCII码并输出到dest中
//将一整串字符串中的数字转换成ASCII码并输出到dest中
int strnumber_to_asciistr(char *dest, const char *src, int len)
{
int i = 0 ;
if(0 == len || NULL == src || NULL == dest)
return -1;
else
{
for(i = 0 ; i < len ; i++, src++)
{
if(*src < '0' || *src > '9')
return -2 ;
*dest++ = "0123456789"[*src >> 4];
*dest++ = "0123456789"[*src & 0x0f];
}
*dest = '\0';
return 0 ;
}
}
BCD码转十进制
//BCD码转十进制
u8 BCD_Decimal(u8 bcd)
{
u8 Decimal;
Decimal = bcd >> 4;
return(Decimal = Decimal * 10 + (bcd &= 0x0F));
}
十进制转BCD码
//十进制转BCD码
u8 Decimal_BCD(u8 decimal)
{
return (u8) (decimal + (decimal / 10) * 6);
}
待续…