如果是有符号型变量,且该值二进制首位为1(如我们定义的是char buf[100],且buf[0]中为0xbf),则会按照补码形式前面全置为1,也就是全为f。(因为终端显示的是8个十六机制数字;另外,我用Tobor C编译,因为Tobor C中int是2bytes,终端显示就成4个十六进制数字了:ffbf,因此我猜测,printf函数显示之前先将有符号...
include <stdio.h>int IsHexChar(char ch){if((ch>='0' && ch<='9') || (ch>='a' && ch<='f') ||(ch>='A' && ch<='F'))return 1;elsereturn 0;}int main(){char str[1000] = "123342abcdAFB1H";int cnt = 0;int i;printf("input str:\n");//gets(str);i =...
void main(){ char a;printf("请输入一个小写字母:");scanf("%c",&a);printf("八进制输出:%o\n十进制输出:%d\n十六进制输出:%x\n字符格式输出:%c\n",a,a,a,a);} 结果:
从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。样例输入 FFFF 样例输出 65535 思路:感觉自己的下面两个方法都对 方案一:方案二:
char arr;int n;scanf("%c",&arr);n=arr-'0';这样就将其转化成10进制了,你再将其转化成二进制就可以载得到八进制和十六进制了
/*十六进制转换成十进制*/#include<stdio.h>intmain(void){inti,k;charhexad[80],str[80];longnumber;printf("Enter a string:");i=0;while((str[i]=getchar())!='\n')i++;str[i]='\0';/*过滤非十六进制字符后生成新字符串*/k=0;for(i=0;str[i]!='\0';i++)if(str[i]<='9'&&...
if(n==16)printf("%x%c",c,c1);} int main(){unsigned char a,b,c;scanf("%c%c%c",&a,&b,&c);out(a,10,' ');out(a,8,' ');out(a,16,'\n');out(b,10,' ');out(b,8,' ');out(b,16,'\n');out(c,10,' ');out(c,8,' ');out(c,16,'\n');return...
include <stdio.h> void main( int argc, char *argv[] ){ long ld;char *p;if( argc != 2 ) return;if( argv[1][0] == 'h' || argv[1][0] =='H' )p = &argv[1][1];else p = &argv[1][0];sscanf( p, "%lx", &ld );printf("%ld\n", ld );} ...
把最后的printf("%d",sum)改成printf("%u",sum)。所有大于0x80000000的数用%d输出时,都是负数。