编辑代码

#include <stdio.h>
#include <stdint.h>

uint32_t reverse_endian(uint32_t ip_address)
{
    uint8_t *bytes = (uint8_t *) &ip_address; // 将指针设置为字节地址
    
    // 交换字节顺序
    uint8_t tmp = bytes[0];
    bytes[0] = bytes[3];
    bytes[3] = tmp;
    
    tmp = bytes[1];
    bytes[1] = bytes[2];
    bytes[2] = tmp;
    
    return ip_address;
}

static uint32 Test_TC8_ipaddr_to_u32addr(const unsigned char* localAddr)
{
	uint32 u32addr = 0U;
	u32addr = (localAddr[0]<< 24) + (localAddr[1]<<16) + (localAddr[2]<<8) + localAddr[3];

	return u32addr;
}
struct my_struct {
    uint8_t array[6];
};
int main()
{
    struct my_struct my_array={{0x11,0x11,0x22,0x33,0x44,0x55}};
    struct my_struct*  p2array =&my_array;
    ip_address=Test_TC8_ipaddr_to_u32addr(p2array->array));
    // uint8_t * p232;
    // p232=p2array->array;
    // uint32_t ip_address=(uint32_t*)(p232+2);
    
    
    
    printf("Original IP address: %08X\n", ip_address);
    
    ip_address = reverse_endian(ip_address); // 调用反转字节序函数
    
    printf("Reversed IP address: %08X\n", ip_address);
    
    return 0;
}