如何将二进制的串转换为字符串

wuzhi11love 2011-04-20 01:22:48
例如char *p="abcd“;那将*P转换为二进制字符串就是:01100001011000100110001101100100,
#include<stdio.h>
void main()
{
char *s="abcd";
unsigned char *p=s;
int i=0;
for(;*p!=0;p++)
{
for ( i=7;i>=0;i--)
{
unsigned char a=0;
unsigned char b=0x01;
a=( (*p)>>i )&b; /*可见内循环*p的值是不变的 */
printf("%u",a);
}
}
}//这是将*s转换为二进制的代码
...全文
334 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
screwzm 2011-04-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 luciferisnotsatan 的回复:]

C/C++ code
char buf[9] = {0};
char *s="abcd";
char *p = s;
while('\0' != *p)
{
itoa(*p, buf, 2);
printf("%08s,",buf);
p++;
}



C/C++ code
char……
[/Quote]
向牛人学习!
panasonic0804 2011-04-20
  • 打赏
  • 举报
回复
二进制的内容不应该是1010101111001101吗?
luciferisnotsatan 2011-04-20
  • 打赏
  • 举报
回复
不用函数,自己写的话

char *s="01100001011000100110001101100100";
char *p = s;
unsigned char c;
while('\0' != *p)
{
c = 0;
for(int i = 0; i < 8; i++)
{
c = (c << 1) + *p - '0';
p++;
}
printf("%c",c);
}
luciferisnotsatan 2011-04-20
  • 打赏
  • 举报
回复
	char buf[9] = {0};
char *s="abcd";
char *p = s;
while('\0' != *p)
{
itoa(*p, buf, 2);
printf("%08s,",buf);
p++;
}


	char buf[9] = {0};
char *s="01100001011000100110001101100100";
char *p = s;
char *end = NULL;
unsigned char c;
while('\0' != *p)
{
memcpy(buf,p,8);
c = (char)strtol(buf,&end,2);
p+=8;
printf("%c",c);
}
ouyh12345 2011-04-20
  • 打赏
  • 举报
回复
读8位,然后转换成int
ningto.com 2011-04-20
  • 打赏
  • 举报
回复
读8位保持起来再继续读下一个8位保持起来读到结尾为止,最后把保持的串联成一个字符串

69,371

社区成员

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

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