gpt4 book ai didi

C++ 在两个字节上写一个数字

转载 作者:行者123 更新时间:2023-11-30 02:49:25 25 4
gpt4 key购买 nike

我是低级 c++ 的新手,我发现很难理解如何操作位。我正在尝试执行以下操作以用于我正在尝试制作的压缩算法:

unsigned int num = ...;//we want to store this number
unsigned int num_size = 3;//this is the maximum size of the number in bits, and
//can be anything from 1 bit to 32

unsigned int pos = 7;//the starting pos on the 1st bit.
//this can be anything from 1 to 8

char a;
char b;

如果 num_size 是 3,例如 pos 是 7,我们必须存储 num,在 7th8th<a 的/strong> 位和 b1st 位。

最佳答案

只是怎么样?

a = num << (pos-1);
b = ((num << (pos-1)) & 0xFF00) >> 8;

只读回num

num = ((unsigned int)a + ((unsigned int b) << 8)) >> (pos - 1);

请注意,这不会进行任何健全性检查,例如是否所有相关位都适合 a 和 b,您必须自己做。

关于C++ 在两个字节上写一个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21194941/

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