/****************************************************************************
* 名 称:u16 StoB_2_BtoS(u16 n) //12转21
* 功 能:2字节的大小端转换
* 入口参数:n 转换前的数
* 出口参数:转换后的数
* 说 明:如 unsigned int 2字节的数
****************************************************************************/
u16 StoB_2_BtoS(u16 n) //12转21
{
char nTmp;
nTmp = ((char*)&n)[0];
((char*)&n)[0] = ((char*)&n)[1];
((char*)&n)[1] = nTmp;
return n;
}
/****************************************************************************
* 名 称:u32 StoB_4_BtoS(u32 n) //1234转4321
* 功 能:4字节的大小端转换(整型)
* 入口参数:n 转换前的数
* 出口参数:转换后的数
* 说 明:如 long int 4字节的数
****************************************************************************/
u32 StoB_4_BtoS(u32 n) //1234转4321
{
char nTmp;
nTmp = ((char*)&n)[0];
((char*)&n)[0] = ((char*)&n)[3];
((char*)&n)[3] = nTmp;
nTmp = ((char*)&n)[1];
((char*)&n)[1] = ((char*)&n)[2];
((char*)&n)[2] = nTmp;
return n;
}
/****************************************************************************
* 名 称:float StoB_F4_BtoS(float f) //1234转4321
* 功 能:4字节的大小端转换(浮点型)
* 入口参数:n 转换前的数
* 出口参数:转换后的数
* 说 明:如 float 4字节的数
****************************************************************************/
float StoB_F4_BtoS(float f) //1234转4321
{
char nTmp;
nTmp = ((char*)&f)[0];
((char*)&f)[0] = ((char*)&f)[3];
((char*)&f)[3] = nTmp;
nTmp = ((char*)&f)[1];
((char*)&f)[1] = ((char*)&f)[2];
((char*)&f)[2] = nTmp;
return f;
}
/****************************************************************************
* 名 称:u8 AsciiToHex(char ch)
* 功 能:单个ASCII码转16进制
* 入口参数:ch 'A'-'F'或'0'-'9'
* 出口参数:转换后的0x0A-0x0F.0x00-0x09
* 说 明:ASCII码A-F.0-9转16进制0x0A-0x0F.0x00-0x09
****************************************************************************/
u8 AsciiToHex(char ch)
{
if(ch >= '0' && ch <= '9') //数字0~9
{
return (ch - 0x30);
}
else
{
if(ch >= 'A' && ch <= 'F') //字母A~F
{
return (ch - 0x37);
}
else
{
return 0xFF;
}
}
}
/****************************************************************************
* 名 称:char HexToAscii(u8 nHex)
* 功 能:单个16进制转ASCII码
* 入口参数:nHex 0x0A-0x0F.0x00-0x09
* 出口参数:转换后的ASCII码
* 说 明:16进制0x0A-0x0F.0x00-0x09转ASCII码A-F.0-9
****************************************************************************/
char HexToAscii(u8 nHex)
{
if(nHex <= 9) //数字0~9
{
return (nHex + 0x30);
}
else
{
if(nHex >= 0x0A && nHex <= 0x0F) //字母A~F
{
return (nHex + 0x37);
}
else
{
return 0xFF;
}
}
}
/****************************************************************************
* 名 称:void BufferAsciiToHex(u8 *pAaciiBuf, u8 *pHexBuf, u16 nAsciiLen)
* 功 能:多个ASCII码转16进制
* 入口参数:*pAaciiBuf ASCII码数据数组 源
*pHexBuf 16进制存放数组 结果
nAsciiLen 转换个数
* 出口参数:无
* 说 明:u8 x[4]="ABCD";
u8 z[2]={0}; 转换后结果{0xAB,0xCD} 4位转2位
****************************************************************************/
void BufferAsciiToHex(u8 *pAaciiBuf, u8 *pHexBuf, u16 nAsciiLen)
{
u16 i;
u8 temp;
if(pAaciiBuf == 0)
return;
if(pHexBuf == 0)
return;
for(i=0; i<
MCU中常用的算法转换总结
最新推荐文章于 2024-06-20 16:02:44 发布