📄 typeconversion.c
字号:
*******************************************************************************/
#include "TypeConversion.h"
//---------------------------------------------------------------------------
/*把0到15(0XF)的数转化为单个字符*/
INT8U HexToChar(INT8U value)
{
return (value < 10) ? (value + '0') : (value - 10 + 'A');
}
//---------------------------------------------------------------------------
/*把单个字符转化为0到15(0XF)的数*/
INT8U CharToHex(INT8U data)
{
return (data<='9')?(data-'0'):((data<='F')?(data-'A'+10):(data-'a'+10));
}
//---------------------------------------------------------------------------
/*把位信息转化为单字符*/
void BitToStr(INT8U value, INT8U *array)
{
array[0] = HexToChar(value);
}
//---------------------------------------------------------------------------
/*把0到255(0XFF)的单个字节转化为字符串*/
void ByteToStr(INT8U value, INT8U *array)
{
array[0] = HexToChar(value >> 4);
array[1] = HexToChar(value & 0X0F);
}
//---------------------------------------------------------------------------
/*把0到65535(0XFFFF)的单个字转化为字符串*/
void WordToStr(INT16U value, INT8U *array)
{
INT16U tmpHigh = 0;
INT16U tmpLow = 0;
tmpHigh = value >> 8;
tmpLow = value & 0X00FF;
ByteToStr((INT8U)tmpHigh, array);
ByteToStr((INT8U)tmpLow, &array[2]);
}
//---------------------------------------------------------------------------
/*把0到4294967295(0XFFFFFFFF)的双字转化为字符串*/
void DWordToStr(INT32U value, INT8U *array)
{
INT32U tmpHigh = 0;
INT32U tmpLow = 0;
tmpHigh = value >> 16;
tmpLow = value & 0X0000FFFF;
WordToStr((INT16U)tmpHigh, array);
WordToStr((INT16U)tmpLow, &array[4]);
}
//---------------------------------------------------------------------------
/*把单个字符转化为位信息*/
INT8U AsciiToBit(const INT8U *array)
{
return (CharToHex(array[0]));
}
//---------------------------------------------------------------------------
/*把字符串转化为0到255(0XFF)的单个字节*/
INT8U AsciiToByte(const INT8U *array)
{
return ((CharToHex(array[0]) << 4) | CharToHex(array[1]));
}
//---------------------------------------------------------------------------
/*把字符串转化为0到65535(0XFFFF)的单个字*/
INT16U AsciiToWord(const INT8U *array)
{
INT16U temp = 0;
INT8U tmpHigh = 0;
INT8U tmpLow = 0;
tmpHigh = AsciiToByte(array); //取前两个字节组成高半字
tmpLow = AsciiToByte(&array[2]); //取后两个字节组成低半字
temp = ((INT16U)tmpHigh << 8) | ((INT16U)tmpLow);
return temp;
}
//---------------------------------------------------------------------------
/*把字符串转化为0到4294967295(0XFFFFFFFF)的双字*/
INT32U AsciiToDWord(const INT8U *array)
{
INT32U temp = 0;
INT16U tmpHigh = 0;
INT16U tmpLow = 0;
tmpHigh = AsciiToWord(array); //取前四个字节组成高字
tmpLow = AsciiToWord(&array[4]); //取后四个字节组成低字
temp = ((INT32U)tmpHigh << 16) | ((INT32U)tmpLow);
return temp;
}
//---------------------------------------------------------------------------
/*计算字符串msg的校验码
INT8U CaculateLRC(const INT8U *msg, INT16U msgLength)
{
INT8U uchLRC = 0;
while (msgLength--)
{
uchLRC += *msg++;
}
return (INT8U)(-(INT8S)uchLRC);
} */
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -