g0b1vetx-board/middleware/Util/util.c
2584532475@qq.com 4a963bd78c 2024-05-31
2024-05-31 16:57:54 +08:00

106 lines
1.7 KiB
C

#include "util.h"
#include <ctype.h>
float Bytes2Float (char * data)
{
Float ff ;
ff.byte[0] = data[1];
ff.byte[1] = data[0];
ff.byte[2] = data[3];
ff.byte[3] = data[2];
return ff.data;
}
uint32_t Bytes2Int (char * data)
{
Int I;
I.byte[0] = data[1];
I.byte[1] = data[0];
I.byte[2] = data[3];
I.byte[3] = data[2];
return I.data;
}
int16_t Bytes2Int16 (char * data)
{
Int16Tobyte int16_byte;
int16_byte.byte[0] = data[1];
int16_byte.byte[1] = data[0];
return int16_byte.value;
}
// -----------------------------------------------------------------
// 函数功能: hex字符串转byte数组
// 函数名称: hexbyte_to_hex_str
// 参数1 : src 源字符串
// 参数2 : obj 目标字节数组
// 说明 : "01020304" --> {0x01,0x03,0x03,x04} 或 "01 02 03 04"->{0x01,0x03,0x03,x04}
// 返回值 : 1 成功
// -----------------------------------------------------------------
int hexstr_to_hexbyte (char *src, char *obj, uint16_t length)
{
char h1, h2;
uint8_t s1, s2;
int i;
length = length / 2;
for (i = 0; i < length; i++)
{
h1 = src[2 * i];
h2 = src[2 * i + 1];
s1 = toupper (h1) - 0x30;
if (s1 > 9)
s1 -= 7;
s2 = toupper (h2) - 0x30;
if (s2 > 9)
s2 -= 7;
obj[i] = s1 * 16 + s2;
}
return length;
}
// 754 转float
float float_to_iee754 (float ff1,char * data)
{
Float ff;
ff.data = ff1;
data[0] = ff.byte[3];
data[1] = ff.byte[2];
data[2] = ff.byte[1];
data[3] = ff.byte[0];
return ff.data;
}
// 754 转float
float iee754_to_float (char * data)
{
Float ff;
ff.byte[3] = data[0];
ff.byte[2] = data[1];
ff.byte[1] = data[2];
ff.byte[0] = data[3];
return ff.data;
}
uint32_t byte_to_Inverse(char * data)
{
Int I;
I.byte[0] = data[3];
I.byte[1] = data[2];
I.byte[2] = data[1];
I.byte[3] = data[0];
return I.data;
}