首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

char[]怎么转成BYTE[]

2013-10-14 
char[]如何转成BYTE[]char a[] 02 03 06 30 41 B3 现我要把这串字符串转成BYTE,转成手变成如下的格式B

char[]如何转成BYTE[]
char a[] = "02 03 06 30 41 B3 "
现我要把这串字符串转成BYTE,转成手变成如下的格式
BYTE b[7] = {0x02,0x03,0x06,0x30,0x41,0xB3}
这该怎么转?
[解决办法]


#include <stdio.h>

unsigned char hex(char ch)
{
if(ch >= '0' && ch <= '9')
return ch - '0';
else if(ch >= 'A' && ch <= 'F')
return ch - 'A' + 10;
else if(ch >= 'a' && ch <= 'f')
return ch - 'a' + 10;
return 0;
}

int main(int argc, char* argv[])
{
char a[] = "02 03 06 30 41 B3 ";
char* p = &a[0];
unsigned char b[7];
unsigned char data;
int i = 0;

while(*p)
{
data = hex(*p++) << 4;
data 
[解决办法]
= hex(*p++);
b[i++] = data;
p++;
}

for(i = 0; i < 7; i++)
printf("0x%02x\n", b[i]);

return 0;
}


引用:
char a[] = "02 03 06 30 41 B3 "
现我要把这串字符串转成BYTE,转成手变成如下的格式
BYTE b[7] = {0x02,0x03,0x06,0x30,0x41,0xB3}
这该怎么转?

[解决办法]
给个思路,
1.用strtok函数分割字符串a;
2.此时得到的16进制数显示字符串转换为10进制的整数;
  给你个转化的例子(假如子字符串b=“02”):

BYTE byt = 0
for(int i=0;i<2;++i)
{
   byt = byt*16;
   swtich(b[i])
   {
     case '0':
     byt += 0;
     break;
     case '1':
     byt += 1;
     ...
   }
}

3.将转换为10进制后赋值给b;

在输出的时候直接选择16进制输出就可以了
[解决办法]
#include <stdio.h>
typedef unsigned char BYTE;
char a[] = "02 03 06 30 41 B3 ";
BYTE b[6];
int i,v;
int main() {
    for (i=0;i<6;i++) {
        sscanf(a+i*3,"%2X",&v);
        b[i]=v;
    }

    for (i=0;i<6;i++) {
        printf("0x%02X ",b[i]);
    }

    return 0;
}
//0x02 0x03 0x06 0x30 0x41 0xB3

热点排行