首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IP DSCP =8使IP总长度变为7位数字。

IP DSCP =8使IP总长度变为7位数字。
EN

Stack Overflow用户
提问于 2013-11-23 15:15:31
回答 1查看 94关注 0票数 0

在以下代码中:

代码语言:javascript
复制
struct ip_header {
        unsigned char ip_hl:4;
        unsigned char ip_ver:4;
        unsigned char ip_dscp:6;
        unsigned char ip_ecn:2;
        unsigned int ip_len;
        unsigned int ip_id;
...
};
...

const struct ip_header * ip_hdr = (const struct ip_header *)(buffer + ETHERNET_HEADER_SIZE);

...

printf("IP DSCP: %u\n", ip_hdr->ip_dcsp);
printf("IP Total Length: %u bytes\n", ip_hdr->ip_len);

...

通常我有IP DSCP = 0和IP,总长度是某个数字< 65535

每当我得到IP DSCP = 8时,总长度就变成一个7位数,即4231532字节。

但正如我们所知,无符号int范围在0到65535之间。

有人能解释一下这里发生了什么吗?IP DSCP = 8是什么意思?还是我错过了IP头长度和IP DSCP之间的某个字段?谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-23 15:44:01

您对数据类型(如int )长度的假设是错误的。它们是定义的实现。

如果需要一个具有定义好的位数的变量,则可以使用

代码语言:javascript
复制
uint16_t
int16_t

如果你是#include <stdint.h>的话。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20164009

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档