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

比如给一个串"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];

供你参考……
#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");}

追问

谢谢你的热心我已经解决了。

温馨提示:答案为网友推荐,仅供参考
相似回答