gpt4 book ai didi

c - 如何更改 unsigned char 中的 4 位?

转载 作者:可可西里 更新时间:2023-11-01 02:32:20 25 4
gpt4 key购买 nike

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,char 值如 0xA0。

最佳答案

这些假设您已将 *single_char 初始化为某个值。否则,caf 发布的解决方案可以满足您的需要。

(*single_char) = ((*single_char) & 0xF0) | val;

  1. (*single_char) & 11110000 -- 将低 4 位重置为 0
  2. | val -- 将最后 4 位设置为值(假设 val < 16)

如果你想访问最后 4 位,你可以使用 unsigned char v = (*single_char) & 0x0F;

如果你想访问高 4 位,你只需将掩码向上移动 4 即可。

unsigned char v = (*single_char) & 0xF0;

并设置它们:

(*single_char) = ((*single_char) & 0x0F) | (val << 4);

关于c - 如何更改 unsigned char 中的 4 位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4755940/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com