/*拼接字节转化为long64
param1: 数组地址
param2: 起始字节下标
param3: 结束字节下标
return: 拼接值
*/
unsigned __int64 Hex2long(BYTE *hex_arr, int s, int e)
{
unsigned __int64 ret = 0i64;
for (int i = s; i <= e; i++)
{
ret |= ((unsigned __int64)hex_arr[i]) << (8 * (e - i));
}
return ret;
}
/*拼接字节转化为float
param1: 数组地址
param2: 起始字节下标
param3: 结束字节下标
return: 拼接值
*/
float Hex2float(BYTE *hex_arr, int s, int e)
{
int ret = 0;
for (int i = s; i <= e; i++)
{
ret |= hex_arr[i] << (8 * (e - i));
}
float b = *(float*)&ret;
return b;
}
/*将long数据按照 高->低位 打包
param1:数据包地址
param2:存放起始字节下标
param3:long数据
param4:类型长度
return:下一个数据的起始字节下标
*/
int Packlong2hex(unsigned char*buf, int s, unsigned _int64 temp, int len)
{
for (int i = 0; i <len; i++)
{
buf[i + s] = temp >> (8 * (len - i - 1)) & 0xFF;
}
return s+len;
}
/*将整数从主机字节序转为网络字节序 高->低
param1: 整数值
param2: 类型长度
return: 从高到低的字节数组
*/
unsigned char* Long2hex(unsigned _int64 temp, int len)
{
unsigned char* buf = new unsigned char[len];
for (int i = 0; i <len; i++)
{
buf[i] = temp >> (8 * (len - i - 1)) & 0xFF;
}
return buf;
}