创作人QQ:851301776,邮箱:lfr890207@163.com ??????? 欢迎大家一起技术交流,本博客主要是自己学习的心得体会,只为每天进步一点点!
个人座右铭: ???????? 1.没有横空出世,只要厚积一定发。 ???????? 2.你可以学历不高,你可以不上学,但你不能不学习 ?
一、将字符串转换为十六进制数据
1.概述
??????? 目的是将一串字符串“A1B2C3”,转换为0xA1,0xB2,0xC3
2.掩码
void ascii_to_hex(unsigned char* str,unsigned int size,unsigned char* str1)
{
u8 deposit [2];
u16 i=0;
u16 num=0;
for(i=0;i<size;i++){
switch(*(str+i)){
case '0':
deposit[i%2]=0x00;
break;
case '1':
deposit[i%2]=0x01;
break;
case '2':
deposit[i%2]=0x02;
break;
case '3':
deposit[i%2]=0x03;
break;
case '4':
deposit[i%2]=0x04;
break;
case '5':
deposit[i%2]=0x05;
break;
case '6':
deposit[i%2]=0x06;
break;
case '7':
deposit[i%2]=0x07;
break;
case '8':
deposit[i%2]=0x08;
break;
case '9':
deposit[i%2]=0x09;
break;
case 'A':
case 'a':
deposit[i%2]=0x0a;
break;
case 'B':
case 'b':
deposit[i%2]=0x0b;
break;
case 'C':
case 'c':
deposit[i%2]=0x0c;
break;
case 'D':
case 'd':
deposit[i%2]=0x0d;
break;
case 'E':
case 'e':
deposit[i%2]=0x0e;
break;
case 'F':
case 'f':
deposit[i%2]=0x0f;
break;
default:
return ;
}
if(i%2){
str1[num++]=(deposit [0]<<4)|deposit [1];
}
}
return ;
}
备注:已经测试使用,没问题
二、将两个字节的字符串转换为一个十六进制的整数
1.概述
??????? 将字符串“A1B2”转换为整数0xA1B2
2.掩码
int hex2str(unsigned int data, char* s, int len)
{
int i;
s[len] = 0;
for (i = len - 1; i >= 0; i--, data >>= 4)
{
if ((data & 0xf) <= 9)
s[i] = (data & 0xf) + '0';
else
s[i] = (data & 0xf) + 'A' - 0x0a;
}
return 1;
}
|