unsigned char *adata = (unsigned char*)malloc(500*sizeof(unsigned char));
unsigned char *single_char = adata+100;
如何更改 single_char 中的前四位以表示 1..10 (int) 之间的值?
问题来自于TCP头结构:
Data Offset: 4 bits
The number of 32 bit words in the TCP Header. This indicates where
the data begins. The TCP header (even one including options) is an
integral number of 32 bits long.
通常它的值为 4..5,字符值类似于 0xA0。
这些假设您已将 *single_char 初始化为某个值。否则,咖啡馆发布的解决方案可以满足您的需要。
(*single_char) = ((*single_char) & 0xF0) | val;
-
(*single_char) & 11110000
-- 将低 4 位重置为 0
-
| val
-- 将最后 4 位设置为值(假设 val
如果你想访问最后 4 位,你可以使用unsigned char v = (*single_char) & 0x0F;
如果你想访问高 4 位,你可以将掩码向上移动 4 位,即。
unsigned char v = (*single_char) & 0xF0;
并设置它们:
(*single_char) = ((*single_char) & 0x0F) | (val << 4);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)