博主在日常工作中开展项目开发,经常遇到要将数据格式做转换处理,比如一段字符串转换为16进制的byte数组、或者一段16进制的byte数组转换成字符串输出等等。
现将这部分常见功能的实现分享给大家,希望对大家的学习和工作有所帮助。
//将一个双字节(16位的数值)拆分为一个数组按字节存储 如 0x1234 ==> 0x12 0x34
void uint16_2_str(uint16_t Num, uint8_t *buff2)
{
buff2[1] = (uint8_t)Num;
Num >>= 8;
buff2[0] = (uint8_t)Num;
}
//将可读的16进制串合并成其一半长度的二进制串, 如 "12AB"-->0x12AB
void asc_2_bcd(char *psIAsc, int32_t iAscLen, char *psOBcd)
{
char Chtmp,ChBcd;
int32_t iCnt;
for(iCnt = 0; iCnt < iAscLen; iCnt += 2)
{
Chtmp = psIAsc[iCnt];
if( Chtmp >= 'A' )
{
Chtmp = (char)toupper((int)Chtmp) - 'A' + 0x0A;