字符串转二进制流

gegegeg 2006-04-19 09:08:58
二进制流转换为字符串为:

void sHexToStr(unsigned char *instr,int len,char *outstr)
{
int i;
char ss[8];

if (len==0)
return;
else
sprintf(outstr,"%02X",*instr);

for (i=1;i<len;i++)
{
memset(ss,0,sizeof(ss));
sprintf(ss,"%02X",*(instr+1));
strcat(outstr,ss);
instr++;
}
}

比如:0x77FF49ED转换为字符串为:77FF49ED

那末,怎末再转回去呢?

即字符串77FF49ED怎末再转回到0x77FF49ED

请大家帮忙看看。多谢。
...全文
292 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
jixingzhong 2006-04-19
  • 打赏
  • 举报
回复
用到的两个函数介绍如下:

char *itoa(int value,char *string,int radix)
将整数value转换成字符串存入string,radix为转换时所用基数

long strtol(char *str,char **endptr,int base)将字符串str转换成长整型数,并返回这个数,
jixingzhong 2006-04-19
  • 打赏
  • 举报
回复
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>

void main()
{
char s[] = "10101010101", c_result[10], i_result[20], *end;
int i;

i = strtol(s, &end, 2); //二进制流转换为16进制字符串
sprintf(c_result, "%x", i);

i = strtol(c_result, &end, 16); //16进制字符串转换为二进制串
itoa(i, i_result, 2);

printf("%s\n%s",c_result, i_result); //输出结果
getch();
}
jixingzhong 2006-04-19
  • 打赏
  • 举报
回复
恩,想了想,
比如:0x77FF49ED转换为字符串为:77FF49ED
这个 0x77FF49ED 是 0 1 组成的一串数据的意思吧 ?

呵呵,
小子笨,大家不要笑 啊 ~
Duwchy 2006-04-19
  • 打赏
  • 举报
回复
把字符串的字母转化为相应的二进制数,然后左移累加就可以了
jixingzhong 2006-04-19
  • 打赏
  • 举报
回复
给楼主搞晕了 ...
二进制流?
unsigned char *instr??

这个不是字符串是什么 ?
gegegeg 2006-04-19
  • 打赏
  • 举报
回复
高手在哪里????????????????????????????????????
gegegeg 2006-04-19
  • 打赏
  • 举报
回复
.......................................................................
kittyhuaner 2006-04-19
  • 打赏
  • 举报
回复
DWORD StrToNumberEx(CString str)
{
DWORD num;
sscanf(str,"%lx",&num);
return num;
}

69,382

社区成员

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

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