首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >存储数字的一部分字节,但不是从一开始?

存储数字的一部分字节,但不是从一开始?
EN

Stack Overflow用户
提问于 2014-01-17 19:01:35
回答 2查看 57关注 0票数 1

我有一个字节: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开始?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-17 19:25:33

假设您对可读字符的ASCII范围(32-126)感兴趣,您将不会有5位的有效范围来满足所需的编码。例如:

代码语言:javascript
复制
~ (126)     = 01111110
(Your Mask) = 01111100

因此,~ (126)将与| (124)相同。

如果您已经以某种方式调整了您的编码,并且可以确保您只拥有较低5位的数据,那么您可以简单地使用按位操作:

代码语言:javascript
复制
unsigned char a = your_data;
a = (a & 0x1F) << 2; // shift the lower 5 bits over 2 bits
票数 2
EN

Stack Overflow用户

发布于 2014-01-17 19:08:38

代码语言:javascript
复制
a = theNumber
//Skip two bytes
a *= 4
//clean bytes 1,2 and 8 (124 in binary = 0111100)
a = a & 124
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21193776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档