c/c++语言开发共享掩盖c中不需要的位

给定二进制的十进制71744474 ,它是0100010001101011101111011010我想从这个十进制中提取的是从低位开始的每七位。 七位中的每一位都表示可打印的ASCII字符,其只能有7位。 我总共拿出四个字符。 第一个字符是1011010 ,它是ASCII的Z 下一个字符是w ,依此类推。 我在想有一种方法来掩盖我关心的一些方面。

    使用按位运算符:

     0100010001101011101111011010 & 0000000000000000000001111111 = 1011010 

    要获得第二个角色,请执行

     0100010001101011101111011010 & 0000000000000011111110000000 

    等等..

    根据这一点,应该足够了:

     #include  int main (void) { unsigned int value = 71184592; // Secret key :-) for (unsigned int shift = 0; shift < 28; shift += 7) printf ("%c", (value >> shift) & 0x7f); putchar ('n'); return 0; } 

    它使用位移将所需的特定位获取到值的最低有效位7位,并使用位屏蔽来清除所有其他位。

    如果你运行该代码,你会发现它可以很愉快地提取每个七位组的单个ASCII字符:

     Pax! 

     int myN = 71744474; int mask = 0x7F7F7F7F; // 7F is 0111 1111, or 7 on bits. int result = myN & mask; char myBytes[4]; myBytes[0] = (char)((result & 0x000000FF); myBytes[1] = (char)((result >> 8) & 0x000000FF); myBytes[2] = (char)((result >> 16) & 0x000000FF); myBytes[3] = (char)((result >> 24) & 0x000000FF); // Now, examine myBytes[0-3], and I think they'll be what you want. 

     #include  int main() { int a = 71744474; a = a&0xFFFFFFF; // 1111111 1111111 1111111 1111111 while (a>0) { char b = a&0x7f; // 1111111 printf("%c", b); a = a>>7; } } 

      以上就是c/c++开发分享掩盖c中不需要的位相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/562397.html

      (0)
      上一篇 2021年2月4日
      下一篇 2021年2月4日

      精彩推荐