vc6.0 如何将字符串转成16进制。

比如给一个串"1234567890"inta[10];转成a[0]=0x12a[1]=0x34a[2]=0x56a[3]=0x78a[4]=0x90或者"11223344... 比如给一个串"1234567890"
int a[10];
转成a[0]=0x12
a[1]=0x34 a[2]=0x56 a[3]=0x78 a[4]=0x90
或者"1122334455667788"
转成a[0]=0x11
a[1]=0x22
a[2]=0x33
...
a[7]=0x88
也就是说其实这个串已经是被格式化成字符串的16进制数。
我要把这个串在转回去。

更改一下上面的数组a不是int,是unsigned char a[10];
展开
 我来答
White_MouseYBZ
2012-03-27 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6528万
展开全部
供你参考……
#include "stdafx.h"
#include "stdio.h"//
#include "string.h"//
#include "stdlib.h"//
void main(void){
char nStr[20],i,j=0,ln;
unsigned char a[20];
printf("请输入一个数字串...\nnStr=");
scanf("%s",&nStr);
if((ln=strlen(nStr))%2) nStr[++ln]='0';
for(i=0,j=0;i<ln;i+=2)
a[j++]=nStr[i]<<4|nStr[i+1]&0xF;
printf("转换后:");
for(i=0,ln/=2;i<ln;i++)//打出来看看……
printf("%x ",a[i]);
printf("\n");
}
更多追问追答
追问
不对,这个串是16进制的格式化来的。
如果这个串为"A122E46F"
应该A1 22 E4 6F
追答
这好办啊,下面是改过的……
#include "stdafx.h"
#include "stdio.h"//
#include "string.h"//
#include "stdlib.h"//
void main(void){
char nStr[20],i,j=0,ln;
unsigned char a[20];
printf("请输入一个数字串...\nnStr=");
scanf("%s",nStr);
if((ln=strlen(nStr))%2) nStr[++ln]='0';
for(i=0,j=0;i'@') nStr[i]-=0x37;
if(nStr[i+1]>'@') nStr[i+1]-=0x37;
a[j++]=nStr[i]<<4|nStr[i+1]&0xF;
}
printf("转换后:");
for(i=0,ln/=2;i<ln;i++)
printf("%x ",a[i]);
printf("\n");}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式