11 个解决方案
#1
n<256,r[1]=n%16;n=n/16;..........
#2
%d输出十进制
%o输出八进制
%x或%X输出十六进制
这些内容入门书上都有
%o输出八进制
%x或%X输出十六进制
这些内容入门书上都有
#3
不管10进制数还是16机制数,在计算机内部都是保存成2进制的。只有显示给人看的时候才会有10进制和16机制之分。
例如:
#include <stdio.h>
int main(void)
{
int a = 127; //10进制数
printf("%d\n", a); //打印10进制数127
printf("%x\n", a); //打印16进制数7f
}
例如:
#include <stdio.h>
int main(void)
{
int a = 127; //10进制数
printf("%d\n", a); //打印10进制数127
printf("%x\n", a); //打印16进制数7f
}
#4
但是我这十进制数是在程序中待处理的数,是一个变换的数,例如x(x不大于16),我需要将x转化成16进制用于下面语句处理,而不是在界面显示,求指导
#5
是整数吗?
#6
怎么可能转换呢?
不管10进制数还是16机制数,在计算机内部都是保存成2进制的。
只有显示给人看的时候才会有10进制和16机制之分。所以你不用变换
不管10进制数还是16机制数,在计算机内部都是保存成2进制的。
只有显示给人看的时候才会有10进制和16机制之分。所以你不用变换
#7
只要是数,就不需要转换。除非是字符串。
#8
自己写个栈(也可以用系统的),借用栈,核心代码如下:
SeqStack st;
InitSeqStack(st);
int N = 0;
char ch;
while(val != 0)
{
N = val % m;
if(N >= 10)
{
ch = 'A' +(N - 10);
Push(st,ch);
}
else
{
ch = N + '0';
Push(st,ch);
}
val = val / m;
}
ShowSeqStack(st);
DestroySeqStack(st);
#9
1)每个十进制数字,都是十六进制数字,所以单个数字,不需要转换
2)C,C++代码中的十进制常数,十六进制常数,是用ASCII表示的编码十进制,十六进制数,
这个编译器,会自动转换为二进制数储存
3)字符串表示的十进制数,十六进制数,是用ASCII表示的编码十进制,十六进制数的字符串
是用字符串储存的,用ASCII表示的编码十进制,十六进制数
这个进制之间的转换,需要编程或者调用库函数转换。
4)不确定长度的十进制和十六进制数的转换,
按照转换规律,自己做大数加法,减法,乘法,除法自己做转换处理
C++可以用string 表示十进制和十六进制数,并定义大数加法,减法,乘法,除法自己做转换处理。
2)C,C++代码中的十进制常数,十六进制常数,是用ASCII表示的编码十进制,十六进制数,
这个编译器,会自动转换为二进制数储存
3)字符串表示的十进制数,十六进制数,是用ASCII表示的编码十进制,十六进制数的字符串
是用字符串储存的,用ASCII表示的编码十进制,十六进制数
这个进制之间的转换,需要编程或者调用库函数转换。
4)不确定长度的十进制和十六进制数的转换,
按照转换规律,自己做大数加法,减法,乘法,除法自己做转换处理
C++可以用string 表示十进制和十六进制数,并定义大数加法,减法,乘法,除法自己做转换处理。
#10
#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汉
#1
n<256,r[1]=n%16;n=n/16;..........
#2
%d输出十进制
%o输出八进制
%x或%X输出十六进制
这些内容入门书上都有
%o输出八进制
%x或%X输出十六进制
这些内容入门书上都有
#3
不管10进制数还是16机制数,在计算机内部都是保存成2进制的。只有显示给人看的时候才会有10进制和16机制之分。
例如:
#include <stdio.h>
int main(void)
{
int a = 127; //10进制数
printf("%d\n", a); //打印10进制数127
printf("%x\n", a); //打印16进制数7f
}
例如:
#include <stdio.h>
int main(void)
{
int a = 127; //10进制数
printf("%d\n", a); //打印10进制数127
printf("%x\n", a); //打印16进制数7f
}
#4
但是我这十进制数是在程序中待处理的数,是一个变换的数,例如x(x不大于16),我需要将x转化成16进制用于下面语句处理,而不是在界面显示,求指导
#5
是整数吗?
#6
怎么可能转换呢?
不管10进制数还是16机制数,在计算机内部都是保存成2进制的。
只有显示给人看的时候才会有10进制和16机制之分。所以你不用变换
不管10进制数还是16机制数,在计算机内部都是保存成2进制的。
只有显示给人看的时候才会有10进制和16机制之分。所以你不用变换
#7
只要是数,就不需要转换。除非是字符串。
#8
自己写个栈(也可以用系统的),借用栈,核心代码如下:
SeqStack st;
InitSeqStack(st);
int N = 0;
char ch;
while(val != 0)
{
N = val % m;
if(N >= 10)
{
ch = 'A' +(N - 10);
Push(st,ch);
}
else
{
ch = N + '0';
Push(st,ch);
}
val = val / m;
}
ShowSeqStack(st);
DestroySeqStack(st);
#9
1)每个十进制数字,都是十六进制数字,所以单个数字,不需要转换
2)C,C++代码中的十进制常数,十六进制常数,是用ASCII表示的编码十进制,十六进制数,
这个编译器,会自动转换为二进制数储存
3)字符串表示的十进制数,十六进制数,是用ASCII表示的编码十进制,十六进制数的字符串
是用字符串储存的,用ASCII表示的编码十进制,十六进制数
这个进制之间的转换,需要编程或者调用库函数转换。
4)不确定长度的十进制和十六进制数的转换,
按照转换规律,自己做大数加法,减法,乘法,除法自己做转换处理
C++可以用string 表示十进制和十六进制数,并定义大数加法,减法,乘法,除法自己做转换处理。
2)C,C++代码中的十进制常数,十六进制常数,是用ASCII表示的编码十进制,十六进制数,
这个编译器,会自动转换为二进制数储存
3)字符串表示的十进制数,十六进制数,是用ASCII表示的编码十进制,十六进制数的字符串
是用字符串储存的,用ASCII表示的编码十进制,十六进制数
这个进制之间的转换,需要编程或者调用库函数转换。
4)不确定长度的十进制和十六进制数的转换,
按照转换规律,自己做大数加法,减法,乘法,除法自己做转换处理
C++可以用string 表示十进制和十六进制数,并定义大数加法,减法,乘法,除法自己做转换处理。
#10
#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汉