zoukankan      html  css  js  c++  java
  • 十进制转换成十六进制、16进制转2进制

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <locale.h>
    int main() {
        int i,v;
        char bs[33];
        char b[33];
        char hs[9];
        char h[9];
        char s[4];
        char *e;
    
    // 十进制整数转二进制串;
        i=1024;
        ltoa(i,b,2);
        sprintf(bs,"%032s",b);
        printf("i=%d,bs=%s
    ",i,bs);
    // 十进制整数转十六进制串;
        i=1024;
        ltoa(i,h,16);
        sprintf(hs,"%08s",h);
        printf("i=%d,hs=%s
    ",i,hs);
    // 十六进制字符串转成十进制数
        strcpy(hs,"00000400");
        sscanf(hs,"%x",&i);
        printf("hs=%s,i=%d
    ",hs,i);
    // 二进制字符串转化为十六进制字符串;
        strcpy(bs,"00000000000000000000010000000000");
        i=strtol(bs,&e,2);
        ltoa(i,h,16);
        sprintf(hs,"%08s",h);
        printf("bs=%s,hs=%s
    ",bs,hs);
    // 二进制字符串转化为十进制数;
        strcpy(bs,"00000000000000000000010000000000");
        i=strtol(bs,&e,2);
        printf("bs=%s,i=%d
    ",bs,i);
    // 十六进制字符串转成二进制串
        strcpy(hs,"00000400");
        sscanf(hs,"%x",&i);
        ltoa(i,b,2);
        sprintf(bs,"%032s",b);
        printf("hs=%s,bs=%s
    ",hs,bs);
    // ASCGBK字符串转十六进制串
        strcpy(s,"a汉");
        i=0;
        while (1) {
            if (0==s[i]) break;
            sprintf(hs+i*2,"%02X",(unsigned char)s[i]);
            i++;
        }
        setlocale(LC_ALL,"chs");
        printf("s=%s,hs=%s
    ",s,hs); 
    // 十六进制字符串转成汉字(GBK)及字符(ASC)
        strcpy(hs,"61BABA");
        i=0;
        while (1) {
            if (1!=sscanf(hs+i*2,"%2x",&v)) break;
            s[i]=(char)v;
            i++;
        }
        s[i]=0;
        printf("hs=%s,s=%s
    ",hs,s);
    
        return 0;
    
    }
    //i=1024,bs=00000000000000000000010000000000
    //i=1024,hs=00000400
    //hs=00000400,i=1024
    //bs=00000000000000000000010000000000,hs=00000400
    //bs=00000000000000000000010000000000,i=1024
    //hs=00000400,bs=00000000000000000000010000000000
    //s=a汉,hs=61BABA
    //hs=61BABA,s=a汉
    
    
    ------解决方式--------------------
    
    
    #include <stdio.h>
    
    union decompose{
    	int integer;
    
    	struct{
    		unsigned int hex0 : 4;
    		unsigned int hex1 : 4;
    		unsigned int hex2 : 4;
    		unsigned int hex3 : 4;
    		unsigned int hex4 : 4;
    		unsigned int hex5 : 4;
    		unsigned int hex6 : 4;
    		unsigned int hex7 : 4;
    	}hex4;
    
    };
    /* 此宏定义不能用于循环,即n不能是变量,仅仅能是数字
     * 因此比較适用与零散获取位状态或者字节状态
     */
    
    #define GETHEX(x, n) (((union decompose){.integer = x}).hex4.hex##n) 
    
    void test_getx(int tmp)
    {
    	printf("%X", GETHEX(tmp, 0));
    	printf("%X", GETHEX(tmp, 1));
    	printf("%X", GETHEX(tmp, 2));
    	printf("%X", GETHEX(tmp, 3));
    	printf("%X", GETHEX(tmp, 4));
    	printf("%X", GETHEX(tmp, 5));
    	printf("%X", GETHEX(tmp, 6));
    	printf("%X
    ", GETHEX(tmp, 7));
    
    }
    
    int main()
    {
    	test_getx(100);	
    	return 0;
    }
    

    MFC 16进制转2进制


    16 转到10

    //16转10进制
    int CCIecClientSimulator12Dlg::HexToDec( char *s )
    {
    	char *p = s;
    
    	//空串返回0。
    	if(*p == '')
    		return 0;
    
    	//忽略开头的'0'字符
    	while(*p == '0')
    		p++;
    
    	int dec = 0;
    	char c;
    
    	//循环直到字符串结束。
    	while(c = *p++)
    	{
    		//dec乘16
    		dec <<= 4;
    
    		//数字字符。
    		if(c >= '0' && c <= '9')
    		{
    			dec += c - '0';
    			continue;
    		}
    
    		//小写abcdef。
    		if(c >= 'a' && c <= 'f')
    		{
    			dec += c - 'a' + 10;
    			continue;
    		}
    
    		//大写ABCDEF。
    		if(c >= 'A' && c <= 'F')
    		{
    			dec += c - 'A' + 10;
    			continue;
    		}
    
    		//没有从不论什么一个if语句中结束,说明遇到了非法字符。
    		return -1;
    	}
    	//正常结束循环,返回10进制整数值。
    	return dec;
    }

    10 转到2 

    UINT CCIecClientSimulator12Dlg::to2( int n )
    {
    	int r=0;
    	//double r=0;
    	double b =10;
    	int shang,yushu;
    	shang=n;
    	int i=0;
    	while(shang!=0)
    	{
    		yushu=shang%2;
    		r=r+pow(b,i)*yushu;
    		i++;
    		shang=shang/2;
    	}
    	return r;
    }



  • 相关阅读:
    Centos7部署jenkins
    查看杀死django进程
    【填坑】python3 manage.py migrate:?: (mysql.W002) MySQL Strict Mode is not set for database connection 'default'
    Amazon S3 加密
    向 Elastic Beanstalk 环境中添加数据库
    Amazon RDS 监控概览
    AWS Lambda 环境变量
    使用 DynamoDB Auto Scaling 自动管理吞吐容量
    使用 Amazon Aurora Auto Scaling 扩展 Aurora 副本
    ECS 服务 Auto Scaling 和 Application Auto Scaling
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/4230564.html
Copyright © 2011-2022 走看看