首页 > 其他分享 >好用的函数

好用的函数

时间:2024-07-04 15:41:24浏览次数:20  
标签:函数 16 int unsigned number char 字符串 好用

二进制是Binary,简写为B。

八进制是Octal,简写为O。

十进制为Decimal,简写为D。

十六进制为Hexadecimal,简写为H。
一、求二进制中1的个数:

int f(unsigned int n)
{ 
   unsigned int number=0;
   for(number=0;n;++number)
   {
     n&=(n-1);               //每与一次就少一个1
    }
    return number;          //number即为二进制中1的个数
}
二、求二进制中0的个数:
int f(unsigned int n)
{
    unsigned int number = 0;
	while(n != 0) {
	if((n&1)==0)
		number++;
	n>>=1;
	}
    return number;			//number即二进制中0的个数
}
三、返回数组中最大值的下标
#include <stdio.h>
int fun ( int * s,int n )			//n为指针s的长度
{ 
    int i,k;
    for ( i=0, k = i; i < n; i++)
        if ( s[i] > s[k])    
            k = i;
    return (k);
}
四、选择排序(降序)
int a[]={4,0,2,3,1},i,j,t; 
for(i=1;i<5;i++)
{
	t=a[i];
	j=i-1;
	while(j>=0&&t>a[j])
	{
		a[j+1]=a[j];
		--j;
	}
	a[j+1]=t;
}
五、将十六进制的字符串转化为二进制的字符串    int i = 1024;    char bs[16],b[16];    sscanf(hs,"%x",&i);    itoa(i,b,2);    sprintf(bs,"%016s",b);    printf("\nhs=%s,bs=%s\n",hs,bs);        //hs为原始的十六进制,bs为转化完成的二进制字符串
void itoa(unsigned long val,char *buf,unsigned radix) //buf为转化完成的二进制字符串
{
 char *p; /* pointer to traverse string */
 char *firstdig; /* pointer to first digit */
 char temp; /* temp char */
  unsigned digval; /* value of digit */
 p = buf;
  firstdig = p; /* save pointer to first digit */
 do{
       digval = (unsigned)(val%radix);
      val /= radix; /* get next digit */
/* convert to ascii and store */
      if(digval > 9)
      *p++ = (char)(digval - 10 + 'a'); /* a letter */
      else
      *p++ = (char)(digval + '0'); /* a digit */
  }while(val>0);/* We now have the digit of the number in the buffer, but in reverse order. Thus we reverse them now. */
  *p-- = '\0'; /* terminate string; p points to last digit */
   do{
  temp = *p;
  *p = *firstdig;
  *firstdig = temp; /* swap *p and *firstdig */
  --p;
  ++firstdig; /* advance to next two digits */
}while(firstdig < p); /* repeat until halfway */
}
六、字符串转化为十六进制    pbDest1为输出的十六进制 pbSrc1为输入的字符串/*// C prototype : void StrToHex(byte *pbDest, char *pszSrc, int nLen)// parameter(s): [OUT] pbDest - 输出缓冲区//    [IN] pszSrc - 字符串//    [IN] nLen - 16进制数的字节数(字符串的长度/2)// return value:// remarks : 将字符串转化为16进制数*/
void StrToHex( char *pbDest1,  char *pbSrc1, int nLen)     
{
	char h1,h2;
	unsigned char s1,s2;
	int i;
	for (i=0; i<nLen; i++)
	{
		h1 = pbSrc1[2*i];
		h2 = pbSrc1[2*i+1];
		s1 = toupper(h1) - 0x30;
		if (s1 > 9)
			s1 -= 7;
		s2 = toupper(h2) - 0x30;
		if (s2 > 9)
			s2 -= 7;
		pbDest1[i] = s1*16 + s2;
	}
}
七、十六进制转化为字符串    pbDest2为输出的字符串   pbSrc2为输入的十六进制/*// C prototype : void HexToStr(char *pszDest, byte *pbSrc, int nLen)// parameter(s): [OUT] pszDest - 存放目标字符串//    [IN] pbSrc - 输入16进制数的起始地址//    [IN] nLen - 16进制数的字节数// return value:// remarks : 将16进制数转化为字符串*/
void HexToStr( char  *pbDest2,  unsigned char *pbSrc2, int nLen)  
{
	char ddl,ddh;
	int i;
	for (i=0; i<nLen; i++)
	{
		ddh = 48 + pbSrc2[i] / 16;
		ddl = 48 + pbSrc2[i] % 16;
		if (ddh > 57) ddh = ddh + 7;
		if (ddl > 57) ddl = ddl + 7;
		pbDest2[i*2] = ddh;
		pbDest2[i*2+1] = ddl;
	}	
	pbDest2[nLen*2] = '\0';
}
八、十六进制字符串转化为十进制数
int tolower(int c)
{
    if (c >= 'A' && c <= 'Z')
    {
        return c + 'a' - 'A';
    }
    else
    {
        return c;
    }
}

int htoi(char s[])
{
    int i;
    int n = 0;
    if (s[0] == '0' && (s[1]=='x' || s[1]=='X'))
    {
            i = 2;
        }
    else
    {
            i = 0;
        }
    for (; (s[i] >= '0' && s[i] <= '9') || (s[i] >= 'a' && s[i] <= 'z') || (s[i] >='A' && s[i] <= 'Z');++i)
    {
            if (tolower(s[i]) > '9')
            {
                        n = 16 * n + (10 + tolower(s[i]) - 'a');
                    }
            else
            {
                        n = 16 * n + (tolower(s[i]) - '0');
                    }
        }
    return n;
}










来自为知笔记(Wiz)

标签:函数,16,int,unsigned,number,char,字符串,好用
From: https://www.cnblogs.com/lisongzzx/p/18283978

相关文章

  • 推荐一款免费好用的图片/照片卡通化、漫画工具
    现在经常能在朋友圈看到朋友、同事的卡通化、漫画照片,会不会觉得很奇怪,他们这些卡通化得照片都是怎么生产的?总不会是找人手绘的吧。如果这样的话,那得付出好多好多money啊。今天来推荐一款免费好用的图片/照片卡通化、漫画工具:《证件照图片助手》,它不仅可以在手机上使用,也可以......
  • C语言函数静态库和动态库的创建和使用
    使用库函数是源码的一种保护???<我猜的.>库函数其实不是新鲜的东西,我们一直都在用,比如C库.我们执行pringf()这个函数的时候,就是调用C库的函数. 下面记录静态库和动态库的生成和使用. 静态库:libxxx.a动态库:libxxx.so 静态库: 在程序编译的时候,将库编译进可......
  • 优化代码以避免 ESLint 的 array-callback-return 错误,需要确保 map 函数中的每个回调
    要优化这段代码以避免ESLint的array-callback-return错误,你需要确保map函数中的每个回调都返回一个值或者通过早期返回来处理。在你的例子中,你只在满足特定条件时返回元素。ESLint的规则要求每个数组迭代都应有返回值,否则它会抛出警告。一种解决方案是在不满足任何条件......
  • 在calculate函数中用 ALL( 'Dim_Calendar' )
    Axis_X_SM_Tgt=VARSele_Month=SELECTEDVALUE('Axis_X_Dec375'[Sort])VARSele_Year=MAX('Dim_Calendar'[CalendarYear])RETURNSWITCH(SELECTEDVALUE('Axis_X_Dec375'[Sort]),13,[D_3.75_Y_SM_Tgt],CALCUL......
  • 函数栈帧(下)
    一函数栈帧的创建我们首先来一步步解析上一篇文章的汇编代码00BE1820pushebp//把ebp寄存器中的值进行压栈,此时的ebp中存放的是invoke_main函数栈帧的ebp,esp-400BE1821movebp,esp//move指令会把esp的值存放到ebp中,相当于产生了main函数的ebp,这......
  • Go语言--自定义函数
    定义格式函数构成代码执行的逻辑结构。在Go语言中,兩数的基本组成为:关键字func、函数名、参数列表、返回值、所数体和返回语句。函数定义说明:func:函数由关键字func开始声明FuncName:函数名称,根据约定,数名首字母小写即为private,大写即为public.参数列表:函数可以有0......
  • MySQL 函数简介
    MySQL提供了丰富的函数,以下是一些常见的类型和示例:数学函数:**1.ABS(x):返回x的绝对值。示例:selectABS(-89);**2.CEIL(x):返回大于或等于x的最小整数。示例:selectCEIL(-89);**3.FLOOR(x):返回小于或等于x的最大整数。示例:selectFLOOR(-89);**4.RAND......
  • 2024年家用洗地机推荐选购指南:哪个品牌的洗地机好用?
    清洁,是贯穿每个家庭日常的主题,无论你是单身打工仔,还是三代同堂,是居住在出租屋还是豪宅,保持家的洁净总是一致的目标。洗地机,作为清洁界的新兴力量,正逐渐成为现代家庭不可或缺的装备,其高效便捷让清洁工作变得省时省力。然而,市场上的洗地机功能日益丰富,该如何做出明智的决策?本文将......
  • EXCEL中20个数据处理类函数公式应用实例
    在Excel中,数据处理类函数是进行数据分析和报告制作的重要工具。以下列举了另外20个数据处理类函数及其应用实例,这些函数涵盖了一系列高级的数据处理需求,包括统计分析、财务计算、工程计算以及更复杂的文本和日期时间操作。数据统计与分析STDEV.S函数:用于计算样本标准差。例......
  • printf函数与cout函数的优缺点
    printf和cout均是C/C++中常用的两种输出方式一、printf优点:1.灵活的格式化:printf提供了丰富的格式化选项,如宽度、填充字符、对齐等。2.适用于多种数据类型:printf可以输出各种内置数据类型,如整数、浮点数、字符等。3.易于理解:对于有经验的程序员来说,printf的语法和格......