Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用C修改char变量二进制内容_C_Binary_Char - Fatal编程技术网

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

使用C修改char变量二进制内容,c,binary,char,C,Binary,Char,我是C新手,需要使用C更改char变量的二进制内容 比如说, char c = 01011000; 现在我想把左边的2位和右边的2位交换。 那么应该是这样 01011000=>00011001 有没有办法做这样的事 多亏了你,我才解决了这个问题 您需要使用按位and&来提取感兴趣的位,按位移位来移动整数中的位,按位or将多个整数逐位组合在一起。看起来像是家庭作业??是的,总有办法的!请注意,C中没有二进制整数的标准语法;您的代码使用八进制8字面值,因为它以数字0开头,后跟范围为0..7的数字。

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

比如说,

char c = 01011000;
现在我想把左边的2位和右边的2位交换。 那么应该是这样

01011000=>00011001

有没有办法做这样的事

多亏了你,我才解决了这个问题


您需要使用按位and&来提取感兴趣的位,按位移位来移动整数中的位,按位or将多个整数逐位组合在一起。

看起来像是家庭作业??是的,总有办法的!请注意,C中没有二进制整数的标准语法;您的代码使用八进制8字面值,因为它以数字0开头,后跟范围为0..7的数字。使用strtol01011000,0,2初始化c。您能解释一下0X3,0X4,0Xc0c&0x3将从字符中提取最后2位,左移位6将从lsb到msb放置2位。类似地,您可以提取2位msb位并将其放置在lsb位置C&0xc0>>6。C&0x4C将4位BLS2 LSB和2 MSB和在TE端,你正在做一个或操作员得到的结果不是你的意思是0x3C在中期?是的,你是正确的,应该是0x3C。
c = ( ((c & 0X3) << 6) | (c & 0x3c) | ((c & 0xc0) >> 6) ) ;
c = ( ((c & 0X3) << 6) | (c & 0x3c) | ((c & 0xc0) >> 6) ) ;