MST

星途 面试题库

面试题:C语言联合体在简单协议头部解析中的应用

假设有一个简单的网络协议头部,包含一个16位的标识符(identifier)和一个8位的类型码(type code)。请使用C语言联合体来定义一个数据结构用于解析这个协议头部,并编写一个简单函数来打印出解析后的标识符和类型码的值。
50.3万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试
#include <stdio.h>

// 使用联合体定义数据结构
union ProtocolHeader {
    struct {
        unsigned short identifier : 16;
        unsigned char type_code : 8;
    } fields;
    unsigned char raw_data[3];
};

// 打印解析后的值的函数
void printHeader(union ProtocolHeader header) {
    printf("Identifier: %hu\n", header.fields.identifier);
    printf("Type Code: %hhu\n", header.fields.type_code);
}

你可以使用以下方式调用这个函数:

int main() {
    union ProtocolHeader test_header;
    // 假设我们有这样一组数据(这里手动设置示例数据)
    test_header.raw_data[0] = 0x01;
    test_header.raw_data[1] = 0x02;
    test_header.raw_data[2] = 0x03;
    printHeader(test_header);
    return 0;
}