gpt4 book ai didi

c++ - BitShifting,将 3 个 u_int8_t 存储在一个整数中并再次读出

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:16:43 26 4
gpt4 key购买 nike

我有一个问题要问你们,这已经让我抓狂了 2 天了。也许是因为我缺少位移位的基础知识,但不知何故我没有想到它。我想要的是一个简单的程序,它读取 3 个 char 或 uint8_t,将它们存储到一个大的 int 中,然后稍后再次读出。

这是我第一次尝试位移位,不知何故我被卡住了。

这是代码:

int main (int argc, const char * argv[])
{
u_int8_t insert1;
u_int8_t insert2;
u_int8_t insert3;
int data;

printf("Please enter value1: ");
scanf("%d", &insert1);
printf("Please enter value2: ");
scanf("%d", &insert2);
printf("Please enter value3: ");
scanf("%d", &insert3);

data |= insert3<<16 | insert2<<8 | insert1;

printf("\nValue1: %d\n", data);
printf("Value2: %d\n", data>>8);
printf("Value3: %d\n", data>>16);
return 0;
}

当我进入

126103255

我得到:

值 1:16711680值 2:65280值 3:255

这是完全错误的。我很确定该值已正确存储到数据中,但我不知道如何读出。

非常感谢:-)

最佳答案

你从未初始化过 data 而你正在这样做:

data |= 

将其初始化为零或将行更改为:

data = insert3<<16 | insert2<<8 | insert1;

关于c++ - BitShifting,将 3 个 u_int8_t 存储在一个整数中并再次读出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7540965/

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