大家好,欢迎来到IT知识分享网。
求C语言16进制字符串转化成字符串的方法。100分!
我有一段类似这样的字符串:”7C7C307C724C7C267C7C7C7C7C3A7C417C7C7″ 其中每两位两位的代表一个字符,类似:“7C”对应“|”、“24”对应“$”、“41”对应“A”、“26”对应“&”等等。。。想用纯C写这样一个函数,跪求大神帮忙,求思路求代码!
分享到:
更多
——解决方案——————–
char hex[101];
char s[51];
strcpy(hex,”7C7C307C724C7C267C7C7C7C7C3A7C417C7C”);
L=strlen(hex);
for (i=0;i
sscanf(hex+i*2,”%2X”,&v);
s[i]=(char)(v&0xFFu);
}
s[i]=0;
printf(“%s\n”,s);
L=strlen(s);
for (i=0;i
hex[2*i+2]=0;
printf(“%s\n”,hex);
“
——解决方案——————–
读字符,转数据,设Bit
就是ASCII码,不需要查表
思路就这样,代码没有,以上
——解决方案——————–
楼主可以看看这个:
#include
#include
#include
using namespace std;
int main(int argc, char *argv[])
{
char st[]=”7C7C307C724C7C267C7C7C7C7C3A7C417C7C7C”;
int ch[strlen(st)/2];
char c[strlen(st)/2];
printf(“十六进制 十进制 字符\n”);
for(int i=0;i
{
ch[i/2]=((st[i]<64?st[i]-48:st[i]-55)*16)+(st[i+1]<64?st[i+1]-48:st[i+1]-55);
c[i/2]=ch[i/2];
printf(” %c%c “,st[i],st[i+1]);
printf(” %5d”,ch[i/2]);
printf(” %5c\n”,c[i/2]);
}
}
——解决方案——————–
//将一个字符串作为十六进制串转化为一个字节数组,字节间可用空格分隔,
//返回转换后的字节数组长度,同时字节数组长度自动设置。
int CMHT_VTest::Str2Hex(CString str, char* data) //与接受消息无关
{
int t,t1;
int rlen=0,len=str.GetLength();
//data.SetSize(len/2);
for(int i=0;i
{
char l,h=str[i];
if(h==’ ‘)
{
i++;
continue;
}
i++;
if(i>=len)
break;
l=str[i];
t=HexChar(h);
t1=HexChar(l);
if((t==16)
——解决方案——————–
(t1==16))
break;
else
t=t*16+t1;
i++;
data[rlen]=(char)t;
rlen++;
}
return rlen;
}
——解决方案——————–
void ShowStr(char *sStr);
void main()
{
ShowStr(“7C7C307C724C7C267C7C7C7C7C3A7C417C7C7C\0”);
}
void ShowStr(char *sStr)
{
char tStr[3]; //临时字串
char ch; //转变后字符
int n=0; //原字串计数
if(sStr==NULL) return; //空串就不操心了
while(1)
{
tStr[0]=sStr[n]; //取1个字符到临时串
if(tStr[0]==0) break; //如果该字符为零,表示原字串已经取完
n++;
tStr[1]=sStr[n]; //再取1个字符到临时串
n++;
tStr[2]=0; //临时串的第3个字符坚决为0
sscanf(tStr,”%x”,&ch); //将临时串以16进制方式给转变字符赋值
printf(“%c”,ch); //输出ch对应的字符
if(tStr[1]==0) break; //如果临时串第2字符为零,表示最后一个数据是单的,原字串已经取完
}
printf(“\n”); //附加赠送,完成后换一行
}
——解决方案——————–
#include
#include
#include
char FromStrToChar(char *str)
{
if(NULL == str)
return ‘\0’;
//对应十六进制数据
int a[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
unsigned int i,sum = 0;
for(i = 0; i
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/152996.html