1、计算最大值和最小值
#define MAX( x, y ) ( ((x) > (y)) ? (x) : (y) )
#define MIN( x, y ) ( ((x) < (y)) ? (x) : (y) )
2、将一个字母转换为大写
#define CAPITAL( c ) ( ((c) >= 'a' && (c) <= 'z') ? ((c) - 0x20) : (c) )
3、获取数组元素个数
#define MY_SIZE( x ) ( sizeof( (x) ) / sizeof( (x[0]) ) )
4、将二进制字符串转化为十进制
static long bin_to_dec(const char *pbin)
{
int ii=0;
long result=0;
while (pbin[ii] != 0) {
result = result * 2 + (pbin[ii] - '0');
ii++;
}
return result;
}
5、十进制转化为八进制
long dec_to_oct(long dec)
{
int oct = 0, i = 0;
i = 1;
while (dec != 0){
oct += (dec % 8) * i;
dec /= 8;
i *= 10;
}
return oct;
}
6、十进制转化为二进制
long bec_to_bin(long n)
{
long result=0,k=1,i,temp;
temp = n;
while(temp){
i = temp%2;
result = k * i + result;
k = k*10;
temp = temp/2;
}
printf("%ld\n", result);
return result;
}
7、十六进制转十进制
long lv_atk_hex_to_dex(char*s)
{
int i,t;
long sum=0;
for(i=0;s[i];i++)
{
if(s[i]>= '0' &&s[i]<='9')/* 当字符是'0'--'9'时,*-‘0'就行了 */
{
t=s[i]-'0';
}
if(s[i]>='a'&&s[i]<='z'){
t=s[i]-'a'+10;/* 当字符是 abcdef 时,*-‘a’+10 就行了 */
}
if(s[i]>='A'&&s[i]<='Z')
{
t=s[i]-'A'+10;/* 当字符是 ABCDEF 时,*-‘A’+10 就行了 */
}
sum=sum*16+t;
}
return sum;
}
8、八进制转十进制
long oct_to_dex(long n)
{
int i=0,tmp,sum=0;
while(n)
{
tmp=n%10;
n=n/10;
sum+=tmp*pow(8,i);
i++;
}
printf("%d",sum);
return sum;
}
9、获取一个字的高位和地位
#define VALUE_L(x) ((byte) ((word)(x) & 255))
#define VALUE_H(x) ((byte) ((word)(x) >> 8))