c - 当将 char 指针指向的内存类型转换为无符号整数时,传入的值与预期不符

标签 c

我正在创建三个结构:

struct ethernet {
    uint16_t dest_mac;
};

struct ip {
    uint16_t src_ip;
    uint16_t dest_ip;
};

struct udp {
    uint16_t porten I
};

然后我创建结构实例,然后将其复制到字符缓冲区中。

memcpy(buffer , eth , sizeof(struct ethernet));
    memcpy(buffer + sizeof(struct ethernet) , ipe , sizeof(struct ip));
    memcpy((buffer + sizeof(struct ethernet) + sizeof(struct ip)) , udpe , sizeof(struct udp));

现在我定义另一个结构:

struct pattern {
    uint64_t pttn;
};

现在我将上面定义的 char 缓冲区指向的内存类型转换为结构模式。

struct pattern *pat = NULL;
pat = (struct pattern *)buffer;

当我执行此操作时,pat->pttn 的值未按预期出现。

示例:

当我传递值时: dest_mac = 1 、 src_ip = 2 、 dest_ip = 3 、 port = 4 。 pat->pttn 的值是 131073 。根据我的说法,该值应该是:281483566841860

最佳答案

由 4 个相邻的 16 位整数组成的 64 位 [无符号] 整数的值取决于系统架构,并且取决于架构的“字节顺序”。

关于c - 当将 char 指针指向的内存类型转换为无符号整数时,传入的值与预期不符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26309702/

相关文章:

c - 需要帮助理解 C 中的特定定义指令

c - 通用变量树错误无限循环

c - C中Struct的恼人问题

c - 强制 2 函数对齐的幂 s.t 对齐 % 其他值 == 对齐

c - 我正在用 C 语言做一个简单的数据库管理项目。但是当我运行此代码时出现错误。

c - 在 gnuplot 和 C 中将绘图另存为 png

c - c中十进制到二进制的错误

javascript - node.js读取txt文件,而c在其中写入

c++ - 如何确定循环返回到哪个设备?

c - scanf() 调用后的指令被调用两次