C语言——把结构体数据封装成TLV格式的数据

本文介绍如何将C语言的结构体TEST_INFO_S转换为TLV格式。结构体包含ucPort和stPid两个变量,TLV中type设为0,len为结构体大小。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

功能描述:

typedef struct
{
    unsigned char ucPort;
    pid_t stPid;
}TEST_INFO_S;

结构体TETS_INFO_S内有两个变量分别是ucPort和stPid,在本文中把此结构体作为TLV的value部分,type部分为0,len为此结构体的大小。

代码实现:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define TEST_TYPE 0
typedef struct
{
	unsigned char ucPort;
	pid_t stPid;
}TEST_INFO_S;

typedef struct 
{
	unsigned int uiType;
	unsigned int uiLen;
}TLV_HEAD_S;

/* 简述:封装tlv结构体
 * 参数:unsigned int uiType 封住tlv结构体中的type字段
 * 		 void *pvData 要封装的数据
 * 		 unsigned int uiLen 要封装的数据长度
 * 返回值:成功后返回封装后结构体的地址,失败返回NULL
 * 备注:封装后的结构体空间使用完后需要释放
 * */
void * tlv_encap(unsigned int uiType, void *pvData, unsigned int uiLen)
{
	void *pvTlv = NULL;
	TLV_HEAD_S *pstTlvHead = NULL;
	unsigned int uiDataLen = sizeof(TEST_INFO_S) + uiLen;

	pvTlv = calloc(1, uiDataLen);
	if(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值