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

急,谢谢啊麻烦详细点哈,... 急,谢谢啊
麻烦详细点哈,
展开
 我来答
memberwin
推荐于2018-03-20 · TA获得超过3903个赞
知道大有可为答主
回答量:1000
采纳率:100%
帮助的人:500万
展开全部

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,以此类推,是这样吗,主要不太明白你表达的意思
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式