我有一个字节:A:0 B:0 C:0 D:0 EE 29:0E 110FE 211:0E 112GE 2130E 114HE 215:0
我想以最快的方式从0-31存储一个数字,只使用字符C、D、E、F、G的空间,换句话说,我想让位1和2空,使用位3-7来存储数字,并使位8为空。
我可以使用c |= 1 << n;设置字节的n位,但是我无法理解如何使它从pos 2开始?
发布于 2014-01-17 19:25:33
假设您对可读字符的ASCII范围(32-126)感兴趣,您将不会有5位的有效范围来满足所需的编码。例如:
~ (126) = 01111110
(Your Mask) = 01111100因此,~ (126)将与| (124)相同。
如果您已经以某种方式调整了您的编码,并且可以确保您只拥有较低5位的数据,那么您可以简单地使用按位操作:
unsigned char a = your_data;
a = (a & 0x1F) << 2; // shift the lower 5 bits over 2 bits发布于 2014-01-17 19:08:38
a = theNumber
//Skip two bytes
a *= 4
//clean bytes 1,2 and 8 (124 in binary = 0111100)
a = a & 124https://stackoverflow.com/questions/21193776
复制相似问题