前言:
现在大家对“c语言数字函数”大致比较关注,同学们都想要分析一些“c语言数字函数”的相关文章。那么小编同时在网上网罗了一些关于“c语言数字函数””的相关文章,希望小伙伴们能喜欢,你们快快来了解一下吧!01.程序断言:用来调试代码是否满足条件
#defineFILE_ASSERT(term) do { if (!(term)) { printf("Assert failed. Condition(%s). [%s][%d]\r\n",term, __FUNCTION__, __LINE__); \while(1) { ; } } } while (0)
02.获取指定地址上的一个字节或字
#define SITE_B( x ) ( *( (byte *) (x) ) )#define SITE _W( x ) ( *( (word *) (x) ) )
03.计算最大值和最小值
#define LV_MAX( x, y ) ( ((x) > (y)) ? (x) : (y) )#define LV_MIN( x, y ) ( ((x) < (y)) ? (x) : (y) )
04.将一个字母转换为大写
#define CAPITAL( c ) ( ((c) >= 'a' && (c) <= 'z') ? ((c) - 0x20) : (c) )
05.获取数组元素的个数
#define MY_SIZE( x ) ( sizeof( (x) ) / sizeof( (x[0]) ) )
06.颜色转换
#define RGB888_turn_monochrome(color) ((color)?0:1)#define RGB888_turn_RGB233(color) ((((color&0xff0000)>>22) << 6) + (((color&0xff00)>>13) << 3) +(((color&0xff)>>5)))#define RGB888_turn_RGB565(color) ((((color&0xff0000)>>19) << 11) + (((color&0xff00)>>10) << 5) +(((color&0xff)>>3)))int LV_RGB888(uint32_t color){ int ret=0; switch(cfgColorDepth) { case 1: // 颜色深度1,单色 { ret= RGB888_turn_monochrome(color); break; } case 8: // 颜色深度8,RGB233 { ret= RGB888_turn_RGB233(color); break; } case 16: // 颜色深度16,RGB565 { ret= RGB888_turn_RGB565(color); break; } case 24: // 颜色深度24,RGB888 { ret= color; break; } default: break; } return ret;}
07.二进制字符串转换为十进制整数
/*** @brief 二进制字符串转换为十进制整数* @param str:待反转的字符串* @retval 反转字符串*/static void lv_atk_bit_str_reverse(char str[]){ int n=strlen(str); int i; char temp; for (i = 0;i < (n/2); i++) { temp = str[i]; str[i] = str[n-i-1]; str[n-i-1] = temp; }}
08.把二进制字符串转换为十进制
/*** @brief 把二进制字符串转换为十进制* @param pbin:二进制* @retval 二进制字符串转换为十进制整数的结果*/static long lv_atk_bit_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;}
09.将十进制转换为八进制
/*** @brief 将十进制转换为八进制* @param n:十进制* @retval 返回八进制*/long lv_atk_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;}
10.十进制转二进制
/*** @brief 十进制转二进制* @param n:十进制* @retval 返回二进制*/long lv_atk_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;}
11.十六进制转十进制
/*** @brief 十六进制转十进制* @param n:十六进制* @retval 返回十进制*/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;}
12.八进制转十进制
/*** @brief 八进制转十进制* @param n:八进制的数值* @retval 返回十进制*/long lv_atk_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;}
13.RAM计算前导零指令(__clz)使用C语言编写
int lv_clz(unsigned int app_readly_list[]){ int bit = 0; for (int i = 0; i < 32; i++) { if (app_readly_list[i] == 1) { break; } bit ++ ; } return bit;}
14.获取一个字的高位和低位字节
#define VALUE_L(x) ((byte) ((word)(x) & 255))#define VALUE_H(x) ((byte) ((word)(x) >> 8))
15.从一个结构的成员指针找到其容器的指针
#define os_container_of(ptr, type, member) \ ((type *)((char *)(ptr) - (unsigned long)(&((type *)0)->member)))
16.获取按指定宽度对齐的向下数
#define ALIGN_DOWN(size, align) ((size) & ~((align) - 1))
17.获取按指定宽度对齐的向上数
#define ALIGN_UP(size, align) (((size) + (align) - 1) & ~((align) - 1))
18.程序定位断言
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #c语言数字函数 #c语言函数必须有什么 #c语言断言函数的作用 #c语言最大值函数怎么使用 #c语言的pow函数怎么用