C语言字符串转换成byte数组的问题
把一个字符串,比如“B2A6A680”转换成bit存到一个数组char *的数组char * buf里,buf[0] = 0xB2,buf[1] = 0xA6,buf[2] = 0xA6,buf[3] = 0x80. 要怎么转换?
[解决办法]
char buf[4]; sscanf("B2A6A680", "%x", buf); *(int*)(buf) = htonl(*(int*)buf);
[解决办法]
你的意思是不是把用字符串表示的十六进制转换为用bit表示的16进制?我是按这个意思写的
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]);}
[解决办法]
#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]);}