创作人QQ:851301776,邮箱:lfr890207@
欢迎大家一起技术交流,本博客主要是自己学习的心得体会,只为每天进步一点点!
个人座右铭:
1.没有横空出世,只要厚积一定发。
2.你可以学历不高,你可以不上学,但你不能不学习
一、将数组中的十六进制数转换为字符串
1.概述
比如我们收到一包数据,数据为十六进制数(0xA1,0xB1,0xC1,0xD1),结果是:将此十六进制数据转换为字符串“A1B2C1D1”。用途:写日志或者其他特殊用法。
2.掩码
void hex_to_asciistring(u8* str,u32 size,u8* str1){u8 deposit [2];u16 i=0;u8 j = 0;for(i=0;i<size;i++){deposit[1] = str[i] & 0x0F;deposit[0] = (str[i] &0xF0) >> 4;for(j = 0; j < 2; j++){switch(deposit[j]){case 0x00:str1[i*2+j]='0';break;case 0x01:str1[i*2+j]='1';break;case 0x02:str1[i*2+j]='2';break;case 0x03:str1[i*2+j]='3';break;case 0x04:str1[i*2+j]='4';break;case 0x05:str1[i*2+j]='5';break;case 0x06:str1[i*2+j]='6';break;case 0x07:str1[i*2+j]='7';break;case 0x08:str1[i*2+j]='8';break;case 0x09:str1[i*2+j]='9';break;case 0x0A:str1[i*2+j]='A';break;case 0x0B:str1[i*2+j]='B';break;case 0x0C:str1[i*2+j]='C';break;case 0x0D:str1[i*2+j]='D';break;case 0x0E:str1[i*2+j]='E';break;case 0x0F:str1[i*2+j]='F';break;default:return ;}}}return ;}
备注:此方法已经过验证,可直接使用
二、将某一个十六进制整数转换为字符串
1.概述
作用:将一个整数0xA1B2,转换为字符串“A1B2”
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';elses[i] = (data & 0xf) + 'A' - 0x0a;}return 1;}