读书人

C语言字符串转换成byte数组的有关问题

发布时间: 2012-04-23 13:17:38 作者: rapoo

C语言字符串转换成byte数组的问题
把一个字符串,比如“B2A6A680”转换成bit存到一个数组char *的数组char * buf里,buf[0] = 0xB2,buf[1] = 0xA6,buf[2] = 0xA6,buf[3] = 0x80. 要怎么转换?

[解决办法]

C/C++ code
    char buf[4];    sscanf("B2A6A680", "%x", buf);    *(int*)(buf) = htonl(*(int*)buf);
[解决办法]
你的意思是不是把用字符串表示的十六进制转换为用bit表示的16进制?我是按这个意思写的
C/C++ code
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]);}
[解决办法]
C/C++ code
#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]);} 

读书人网 >C语言

热点推荐