利用函数模板进行数据类型转换

在数据帧的发送中,一般是将数据类型拆分成数组发送,如float拆为长度为4的数组,这个过程称为编码。数组被tcp、udp、串口发送给接收端,接收端将长度为4的数组后将组合成float数据,这个过程叫解码。
这种数据类型的转换,一般在帧的编码和解码中经常使用,使用中需要注意数据的大小端。
现在使用模板函数方式实现上述内容,即数据类型不限于float,也可以是int、double、结构体、甚至可以为类。

1、解码:数组转数据类型

template<typename  T >
T decodeValue(char * data, int len){
    
    
    T var;
    int vlen = sizeof(T);
    if(vlen>len){
    
    
        return var;
    }
    char * dicp = (char *)&var;
    memcpy(dicp, data, vlen);
    return var;
}

2、编码:数据类型转数组

template<typename  T >
bool encodeValue(T val, char * data, int len){
    
    
    int vlen = sizeof(T);
    if(vlen>len){
    
    
        return false;
    }
    char * dicp = (char *)&val;
    memcpy(data, dicp, vlen);
}

可查看其他文章:利用联合体进行数据类型转换

猜你喜欢

转载自blog.csdn.net/weixin_42887343/article/details/120448377