C语言 16进制的字符串“000100010019” 转化成Byte byte[6] = {0x00, 0x01, 0x00, 0x01, 0x00, 0x19}
2个回答
展开全部
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;
}
2015-07-23
展开全部
和0xff0000000000相与是0x00,和0x00ff00000000相与是0x01,以此类推,是这样吗,主要不太明白你表达的意思
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询