C语言 16进制的字符串“000100010019” 转化成Byte byte[6] = {0x00, 0x01, 0x00, 0x01, 0x00, 0x19}

急,谢谢啊
麻烦详细点哈,

ANSI C中貌似没有Byte吧? 下述代码中用typedef定义其为unsigned char,如果你用的C编译器中已经有Byte的定义,去除typedef那行就好了。

基本算法就是从字符串的最左端开始,每两个字符组成一个Byte,存储到byte数组的合适位置。

#include <stdio.h>
typedef unsigned char Byte;
void s2bytes(char *str, Byte *r)
{
 int i=0;
 Byte b;
 while(*(str+i)!='\0')
 {
  b=(*(str+i)-'0')*16+ *(str+i+1)-'0';
  i+=2;
  *r++=b;
 }
}
int main() 

    char str[]="000100010019";
    Byte ba[6];
    int i;
    s2bytes(str, ba);
    for(i=0; i<6; i++)
     printf("%x ", ba[i]);
    printf("\n");
    return 0; 
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-07-23
和0xff0000000000相与是0x00,和0x00ff00000000相与是0x01,以此类推,是这样吗,主要不太明白你表达的意思
相似回答