gpt4 book ai didi

c - 使用C修改char变量二进制内容

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

我是 C 新手,我需要使用 C 更改 char 变量的二进制内容。

例如,

char c = 01011000;

现在我想将左侧 2 位与右侧 2 位交换。那么应该是这样的。

01011000 => 00011001

有办法做到这样的事情吗?

<小时/>

感谢@unwind,我解决了这个问题

unsigned char c =  strtol("10101111", 0, 2);
unsigned char maskLeft,maskRight ,maskMiddle, extractLeft,extractRight,extractMiddle, extractCombi;
unsigned char extractLeft_moved, extractRight_moved;
unsigned char finalResult;

// ~0 = 11111111
maskLeft = ~0 << 6; // 11000000
maskRight = ~(~0 << 2); // ~(11111100) = 00000011
maskMiddle = ~(maskLeft | maskRight); // ~(11000011) = 00111100

extractLeft = c & maskLeft; // 10101111 & 11000000 = 10000000
extractRight = c & maskRight; // 10101111 & 00000011 = 00000011
extractMiddle = c & maskMiddle; // 10101111 & 00111100 = 00101100

// Now move left side 2 bits to right side
extractLeft_moved = extractLeft >> 6; // 00000010
// Move right side 2 bits to left side
extractRight_moved = extractRight << 6; // 11000000
extractCombi = extractLeft_moved | extractRight_moved; // 11000010

// Combine middle bits with exchange bits
finalResult = extractCombi | extractMiddle; // 00101100 | 11000010 = 11101110

最佳答案

您需要使用按位与 ( & ) 提取(“屏蔽掉”)感兴趣的位,按位移位( <<>> )在整数内移动位,并使用按位或 ( | ) 将多个整数组合在一起一点一滴。

关于c - 使用C修改char变量二进制内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21930526/

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