gpt4 book ai didi

c - 如何在一字节整数中存储2位、1位、1位和四位值

转载 作者:行者123 更新时间:2023-11-30 20:22:08 24 4
gpt4 key购买 nike

我是存储此类值的新手。我的标题字段值很少。2bit = 2 , 1bit = 1, 1 bit = 0, 4bit = 13。如何按顺序将其存储在 uint8 中?请帮助我。

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

int main(void) {
uint8_t m;
uint8_t one, two, three, four;
one = 2;
two = 1;
three = 1;
four = 13;

// do not know how to store,

//assuming m is stored
one = (m >> 7) & 1;
two = (m >> 5) & 3;
three = (m >> 4) & 1;
four = m & 15;
printf("first %i , second %i, third %i, four %i", one, two, three, four);
return 0
}

最佳答案

看来您已经知道如何使用位移位来检索存储的值。将其反转以存储值。

m = ((one & 1) << 7) | ((two & 3) << 5) | ((three & 1) << 4) | (four & 15);

此代码基于您的代码:one 是 1 位,two 是 2 位,two 是 1 位, four 是 4 位宽。 2 被分配给 one,因此它会被 & 1 视为零。

如果您想将 2 位分配给 one,将 1 位分配给 two,请使用此存储:

m = ((one & 3) << 6) | ((two & 1) << 5) | ((three & 1) << 4) | (four & 15);

这个用于检索:

one = (m >> 6) & 3;
two = (m >> 5) & 1;
three = (m >> 4) & 1;
four = m & 15;

关于c - 如何在一字节整数中存储2位、1位、1位和四位值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40655161/

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