永发信息网

c语言中如何将一个unsigned char变成以二进制表示的字符串?比如将‘A’变成"01000001"。

答案:4  悬赏:60  手机版
解决时间 2021-03-06 20:11
  • 提问者网友:自食苦果
  • 2021-03-06 07:09
有c语言代码吗?
最佳答案
  • 五星知识达人网友:独行浪子会拥风
  • 2021-03-06 08:35
现将字符 A 转成整形即它的 ascii码 65 然后将十进制的 65 转成 二进制的 01000001

#include<stdio.h>
void main()
{
unsigned char ch;
printf("please enter a char:");
scanf("%c",&ch);
int ch1=ch;
int ch3[8];
int i=0;
while(ch1!=0)
{
int ch2=ch1%2;
ch3[i]=ch2;
i++;
ch1=ch1/2;
}
if(i<8)
{
for(int k=i;k<8;k++)
{
ch3[k]=0;
}
}
for(int j=7;j>=0;j--)
{
printf("%d",ch3[j]);
}
printf("\n");
}
全部回答
  • 1楼网友:白昼之月
  • 2021-03-06 11:11
可以使用强制类型转换,示例代码如下: char buf[]="abc"; int tmp = *(int*)buf; printf("%s",(char*)&tmp);//输出看看字符串有没有丢失或错误 但是这样转换有一个限制,就是只能对不超过4个字节的字符串进行转换 因为int类型默认都是4个字节,只能放入4个字符 如果需要大批量的转换,则需要用memcpy,示例代码如下: char buf[]="abc123"; int tmp[2];//6个字符串需要2个int来保存 memcpy(tmp,buf,strlen(buf)+1); printf("%s",(char*)tmp);//输出看看字符串有没有丢失或错误 但是这样并没有什么优势,字节在内存中占用的大小并没有变化
  • 2楼网友:封刀令
  • 2021-03-06 09:59
(char)(((num>> i)&1)+'0'); 这一句取出num的第i位(i=0,1...),lz写个循环把所有位打出来就可以了
  • 3楼网友:夜风逐马
  • 2021-03-06 09:39
用除2取余法 用A的字符那个数值(我忘了是多少,太久没碰了) 用0来举例吧,0是48 unsigned char a = '0'. int b[100],i=0,j. where(a/2 != 0) { b[i] = a%2. a = a/2. i++. } i++. b[i] = a%2. for (j = i; j>0; j--) { println("%d",b[j]). }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯