c++ - C根据其当前值更改char字节中的特定位
问题描述
类似的问题在 Stack over 周围被问了很多次,但我真的找不到任何地方可以回答这个特定的情况。我有一个字符,它当然有二进制表示。我用这种方法打印它:
void print_binary(unsigned char x) {
int b = 128;
while (b != 0) {
if (b <= x) {
x -= b;
printf("1");
} else
printf("0");
b = b >> 1;
}
}
我有一些字符:
char c = 'c';
现在,我需要能够翻转任何字符/字节中的特定位。要真正拼出它,我需要一个具有此签名的函数:
char flip_bit(int idx, char c) { 所以,我给它一个字符和一个索引。然后它应该在索引处翻转该位,并返回一个新字符。
对我不起作用的解决方案
在类似的问题中,已经给出了一些我不能专门用于这个问题的解决方案:
int mask = 0x90; // 10010000
int num = 0xE3; // 11100011
num ^= mask;
这不起作用,因为我需要动态地执行此操作,并且不能硬编码每个字节以供 xor'ring 使用。如果有人可以告诉我如何在上述功能中实现这一点,那就太好了。
或者这个解决方案:
char c = 'c';
c |= 1UL << 4;
这适用于将第 4 位从 0 翻转到 1。但我不能让它反过来工作。我还需要一些东西,我不需要指定它应该变成 1 还是 0,而只是翻转它。
c |= 0UL << 4; # this has no effect
有人不能帮助我吗?
编辑:这个问题已经结束,因为它听起来很像这个问题,但是,如果有人花时间阅读我在这里写的内容,你会注意到针对该问题提出的解决方案都不符合我的规范已经写了
解决方案
推荐阅读
- ssas - 来自 ssas 多维立方体,如何通过 salesPoint 和 month 从 factsales 中获得最高销售额
- node.js - 我如何编写一个从 mongodb 查询的辅助函数,然后可以为任何 ejs 模板调用此函数
- responsive - 我怎样才能使网站移动友好?
- java - 在java中使用递归来反转字符串
- python - 使用 SymPy 解决具有符号数量变量的约束优化问题
- git - git push a detached head to a dev branch of remote
- php - 没有点运算符的字符串中的 PHP 函数
- node.js - 在mongodb nodejs中从具有字符串/ id数组的文档中查找数据
- c# - 使用 oledb 的 C# 更新命令
- python - 带有 groupby 和条件的 Pandas 滚动总和