69,382
社区成员
发帖
与我相关
我的任务
分享
unsigned char fun(char c)/*把用字符表示的十六进制数转换为二进制表示*/
{
if('A' <=c && c <='Z')
return c - 'A' + 10;
if('a' <=c && c <='z')
return c - 'a' + 10;
return c - '0' ;
}
void convert(const char *str, unsigned char *arr)
{
for(unsigned i = 0; str[i] != '\0'; ++i )
if(i%2 == 0){
arr[i/2] = fun(str[i]);
arr[i/2] <<= 4;
}
else
arr[i/2] |= fun(str[i]);
}
char buf[4];
sscanf("B2A6A680", "%x", buf);
*(int*)(buf) = htonl(*(int*)buf);
#include <stdio.h>
#include <string.h>
int toint (char a) //将字符改为数值
{
int n=0;
if(a>'9') //注意这里我没有写关于字母是大写还是小写判断 //你用小写就会计算错误
n=a-55;
else
n=a-0x30;
return n;
}
void main()
{
char c[]="B2A6A680";
int a[20]={0};
int i;
int j;
j=strlen(c);
for(i=0;i<j;i=i+2)
a[i]=toint(c[i])*16+toint(c[i+1]); //将前后合成一个整体你应该知道吧
for(i=0;i<j;i=i+2)
printf("%x\n",a[i]);
}