SOME/IP协议详解「2.1.7·序列化:联合体|Union/Variant」
点击返回雪云飞星的SOME/IP协议详解「总目录」
- SOME/IP协议详解「2.1.7·序列化:联合体|Union/Variant」
联合体可以说是我们使用最少的类型了,甚至有的车厂直接静止使用联合体,以确保someip通信报文的易读性;同时有些c语言规范也不提倡使用联合体,容易在使用中出问题,所以可能是我们使用中最不常见的一种形式 联合体是说将一块内存的数据可以解析成不同的类型,以方便调用,而序列化的时候,只能选定其中一种类型进行传输。比如我们有如下的union定义:
我们选定按照b类型传输,那么最终的layout如图:

我们分为3段来看:
- length代表这个union序列化后的长度,这里包括后面的type+数据+填充的长度。这个长度域也可以配置占用字节数(0,1,2,4bytes;其中0就是不要有长度域)
- type代表要将这个联合体以哪种类型进行序列话,比如我们选择上面的uint16,那么对应的类型是2(0保留为NULL的含义,从1开始算,uint16对应type==2)
- 然后就是uint16 类型的b这个数据本身
- 最后为了之前讲过的对齐原因,这里填充了2bytes
点击返回雪云飞星的SOME/IP协议详解「总目录」
本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/17834.html。