char a = 0x65; 用putchar打印出“65”

袁保康 2013-05-16 11:01:42

char a = 0x65; 用putchar打印出“65”

条件有限,只能用putchar怎么做呢?大侠支招!


如果putchar(a)出来的是e。

还有如果要进行转换,麻烦不要使用库函数,目前不能使用库函数。谢谢。
...全文
866 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
袁保康 2013-05-30
  • 打赏
  • 举报
回复
引用 2 楼 zjq9931 的回复:
printf至少是可以用的吧? printf("%x", a); 就可以了。 如果这个都不能用。就只能计算了。

#include<stdio.h>
int main()
{
	char a=0x65;
	char cTmp;

	putchar(a);
	//方法一printf
	printf("\n%x\n", a);

	//方法二,计算
	cTmp=a>>4;//右移4位,把高位放到低位
	if(cTmp<10)//如果是小于10的数
	{
		cTmp+='0';//以0-9输出
	}
	else
	{
		cTmp+='A'-10;  //大于等于10的就是ABCDEF了。
	}
	putchar(cTmp);
	cTmp=a&0x0f;
	if(cTmp<10)
	{
		cTmp+='0';
	}
	else
	{
		cTmp+='A'-10;
	}
	putchar(cTmp);

	return 0;
}
当时暂时不做了,就没有继续验证,今天又遇到了,想到了这个帖子,试了一下,就是你的最有效,没有乱码,我也整理了一下:
int puthex(volatile char a)
{
    volatile char cTmp;
 
    //putchar(a);
    //方法一printf
    //printf("\n%x\n", a);
 
    //方法二,计算
    cTmp=a>>4;//右移4位,把高位放到低位
    if(cTmp<10)//如果是小于10的数
    {
        cTmp+='0';//以0-9输出
    }
    else
    {
        cTmp+='A'-10;  //大于等于10的就是ABCDEF了。
    }
    putc(cTmp);
    cTmp=a&0x0f;
    if(cTmp<10)
    {
        cTmp+='0';
    }
    else
    {
        cTmp+='A'-10;
    }
    putc(cTmp);
 
    return 0;
}
袁保康 2013-05-16
  • 打赏
  • 举报
回复
引用 4 楼 zjq9931 的回复:
[quote=引用 3 楼 kangear 的回复:] [quote=引用 2 楼 zjq9931 的回复:] printf至少是可以用的吧? printf("%x", a); 就可以了。 如果这个都不能用。就只能计算了。

#include<stdio.h>
int main()
{
	char a=0x65;
	char cTmp;

	putchar(a);
	//方法一printf
	printf("\n%x\n", a);

	//方法二,计算
	cTmp=a>>4;//右移4位,把高位放到低位
	if(cTmp<10)//如果是小于10的数
	{
		cTmp+='0';//以0-9输出
	}
	else
	{
		cTmp+='A'-10;  //大于等于10的就是ABCDEF了。
	}
	putchar(cTmp);
	cTmp=a&0x0f;
	if(cTmp<10)
	{
		cTmp+='0';
	}
	else
	{
		cTmp+='A'-10;
	}
	putchar(cTmp);

	return 0;
}
谢谢呀,不过1楼的要简单一点了。[/quote] 1楼的可是有BUG的哈。 如果是别的编码可能会有问题的。 [/quote] 是吗?我仔细试试,多谢提醒啊。
  • 打赏
  • 举报
回复
引用 3 楼 kangear 的回复:
[quote=引用 2 楼 zjq9931 的回复:] printf至少是可以用的吧? printf("%x", a); 就可以了。 如果这个都不能用。就只能计算了。

#include<stdio.h>
int main()
{
	char a=0x65;
	char cTmp;

	putchar(a);
	//方法一printf
	printf("\n%x\n", a);

	//方法二,计算
	cTmp=a>>4;//右移4位,把高位放到低位
	if(cTmp<10)//如果是小于10的数
	{
		cTmp+='0';//以0-9输出
	}
	else
	{
		cTmp+='A'-10;  //大于等于10的就是ABCDEF了。
	}
	putchar(cTmp);
	cTmp=a&0x0f;
	if(cTmp<10)
	{
		cTmp+='0';
	}
	else
	{
		cTmp+='A'-10;
	}
	putchar(cTmp);

	return 0;
}
谢谢呀,不过1楼的要简单一点了。[/quote] 1楼的可是有BUG的哈。 如果是别的编码可能会有问题的。
袁保康 2013-05-16
  • 打赏
  • 举报
回复
引用 2 楼 zjq9931 的回复:
printf至少是可以用的吧? printf("%x", a); 就可以了。 如果这个都不能用。就只能计算了。

#include<stdio.h>
int main()
{
	char a=0x65;
	char cTmp;

	putchar(a);
	//方法一printf
	printf("\n%x\n", a);

	//方法二,计算
	cTmp=a>>4;//右移4位,把高位放到低位
	if(cTmp<10)//如果是小于10的数
	{
		cTmp+='0';//以0-9输出
	}
	else
	{
		cTmp+='A'-10;  //大于等于10的就是ABCDEF了。
	}
	putchar(cTmp);
	cTmp=a&0x0f;
	if(cTmp<10)
	{
		cTmp+='0';
	}
	else
	{
		cTmp+='A'-10;
	}
	putchar(cTmp);

	return 0;
}
谢谢呀,不过1楼的要简单一点了。
  • 打赏
  • 举报
回复
printf至少是可以用的吧? printf("%x", a); 就可以了。 如果这个都不能用。就只能计算了。

#include<stdio.h>
int main()
{
	char a=0x65;
	char cTmp;

	putchar(a);
	//方法一printf
	printf("\n%x\n", a);

	//方法二,计算
	cTmp=a>>4;//右移4位,把高位放到低位
	if(cTmp<10)//如果是小于10的数
	{
		cTmp+='0';//以0-9输出
	}
	else
	{
		cTmp+='A'-10;  //大于等于10的就是ABCDEF了。
	}
	putchar(cTmp);
	cTmp=a&0x0f;
	if(cTmp<10)
	{
		cTmp+='0';
	}
	else
	{
		cTmp+='A'-10;
	}
	putchar(cTmp);

	return 0;
}
starytx 2013-05-16
  • 打赏
  • 举报
回复
    char a = 0x65;
    putchar(a/16 + '0');
    putchar(a%16 + '0');

70,026

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧