十进制转换成十六进制和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\n",i,bs);
// 十进制整数转十六进制串;
    i=1024;
    ltoa(i,h,16);
    sprintf(hs,"%08s",h);
    printf("i=%d,hs=%s\n",i,hs);
// 十六进制字符串转成十进制数
    strcpy(hs,"00000400");
    sscanf(hs,"%x",&i);
    printf("hs=%s,i=%d\n",hs,i);
// 二进制字符串转化为十六进制字符串;
    strcpy(bs,"00000000000000000000010000000000");
    i=strtol(bs,&e,2);
    ltoa(i,h,16);
    sprintf(hs,"%08s",h);
    printf("bs=%s,hs=%s\n",bs,hs);
// 二进制字符串转化为十进制数;
    strcpy(bs,"00000000000000000000010000000000");
    i=strtol(bs,&e,2);
    printf("bs=%s,i=%d\n",bs,i);
// 十六进制字符串转成二进制串
    strcpy(hs,"00000400");
    sscanf(hs,"%x",&i);
    ltoa(i,b,2);
    sprintf(bs,"%032s",b);
    printf("hs=%s,bs=%s\n",hs,bs);
// ASC\GBK字符串转十六进制串
    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\n",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\n",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\n", GETHEX(tmp, 7));

}

int main()
{
	test_getx(100);
	return 0;
}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索字符串
, int
, strcpy
, printf
, 进制
, 十六进制转中文
, 十六进制
, bs
, 字符转16进制
, 十进制
, 切割字符串sscanf
, 十六进制转八进制
, unsigned
sscanf格式化输入
十六进制转换、十六进制转换成十进制、十六进制颜色转换、十六进制转换字符串、十六进制转换二进制,以便于您获取更多的相关知识。

时间: 2016-02-17

十进制转换成十六进制和16进制转2进制的实现的相关文章

c语言-输入一个十进制整数,依次转换成2到16进制数

问题描述 输入一个十进制整数,依次转换成2到16进制数 求大神帮帮忙做一下 我刚刚学C语言 程序代码 弄了好久都没弄出来 大神帮忙编一个程序代码 ,谢谢了 解决方案 #include <iostream> using namespace std; char metachar[] = "0123456789abcdef"; void tobasen(int x, int n) { if (x > 0) { tobasen(x / n, n); cout <<

c++实现十进制转换成16进制示例_C 语言

c++实现十进制转换成16进制 复制代码 代码如下: //Decimal to hexadecimal number//programming by : Erfan Nasoori//Date of send : 2009/1/11 #include <iostream.h> void main(){ int x,y,i; int d,n=1; int * r; char h[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D

linq 如何将字符串转换成十六进制?

问题描述 linq 如何将字符串转换成十六进制? linq 如何将字符串转换成十六进制? 解决方案 http://luohonghong.blog.163.com/blog/static/78312058201242632055642/ private string StringToHexString(string s, Encoding encode) { byte[] b = encode.GetBytes(s);//按照指定编码将string编程字节数组 string result = s

c语言-C语言十进制转换成二进制(可转换小数)哪里出错了?

问题描述 C语言十进制转换成二进制(可转换小数)哪里出错了? //#include #include#define decimalnum 8//小数二进制位数 void main(){char Integerbuffer[100];//整数char decimalbuffer[20];//小数float number;double decimalnumbera;long value;int i;printf(""请输入需要转换成二进制的十进制数:"");scanf(

十进制转换成二进制(如8转成1000)

二进制|十进制|转换 alter proc prc_num @num bigintasdeclare @numstr varchar(50)set @numstr=''while (@num<>0)begin   set @numstr=@numstr+convert(char(1),@num%2)   set @num=@num/2endselect reverse(@numstr) exec prc_num 8

请大能看看这段十进制转换成八进制的代码

问题描述 intamount;stringcurrent="";do{intnextDigit=amount%8;intdigitCode='0'+nextDigit;chardigit=Convert.ToChar(digitCode);current=digit+current;steps.Text+=current+"n";amount/=8;}while(amount!=0);我认为intdigitCode='0'+nextDigit;chardigit=C

用js实现的十进制的颜色值转换成十六进制的代码_javascript技巧

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

递归法求解十进制转换成二进制

#include <iostream> using namespace std; void decimalToBinary(int number) { if (number == 1 || number == 0) cout << number; else { decimalToBinary(number / 2); cout << number % 2; } } int main() { for (int i = 10; i <= 50; i++) { deci

c++中 int十进制数如何转int 16进制数

问题描述 c++中 int十进制数如何转int 16进制数 例如,我有int a = 100:但是我要获得int b = 0x100:如何把a转换成b. 解决方案 你这个只能是转成16进制字符串,如果是数值的话,你可以直接这样写,在内存中,不管什么进制,都是以二进制表示 解决方案二: int转6位16进制数. 解决方案三: 不妨看看 char *itoa( int value, char *string,int radix); 第三个参数是进制 解决方案四: 可以先转换成字符串,然后通过字符串再