c#设置或者获取byte(字节、8位二进制整数)某位的的值的代码

作者:菊花古剑和酒

转自:http://blog.csdn.net/jefftian2008/article/details/8661723


[csharp] view plain copy
  1. 代码 #region 获取整数的某一位,设置整数的某一位  
  2.         /// <summary>  
  3.         /// 取整数的某一位  
  4.         /// </summary>  
  5.         /// <param name="_Resource">要取某一位的整数</param>  
  6.         /// <param name="_Mask">要取的位置索引,自右至左为0-7</param>  
  7.         /// <returns>返回某一位的值(0或者1)</returns>  
  8.         public static int getIntegerSomeBit(int _Resource, int _Mask)  
  9.         {  
  10.             return _Resource >> _Mask & 1;  
  11.         }  
  12.   
  13.   
  14.         /// <summary>  
  15.         /// 将整数的某位置为0或1  
  16.         /// </summary>  
  17.         /// <param name="_Mask">整数的某位</param>  
  18.         /// <param name="a">整数</param>  
  19.         /// <param name="flag">是否置1,TURE表示置1,FALSE表示置0</param>  
  20.         /// <returns>返回修改过的值</returns>  
  21.         public static int setIntegerSomeBit(int _Mask, int a, bool flag)  
  22.         {  
  23.             if (flag)  
  24.             {  
  25.                 a |= (0x1 << _Mask);  
  26.             }  
  27.             else  
  28.             {  
  29.                 a &= ~(0x1 << _Mask);  
  30.             }  
  31.             return a;  
  32.         }  
  33. #endregion  


另外,还可以使用BitArray这个类,如下演示了BitArray的用法

[csharp] view plain copy
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Text;  
  5. using System.Collections;  
  6.   
  7. namespace Hash  
  8. {  
  9.     class Program  
  10.     {  
  11.          
  12.         static void Main(string[] args)  
  13.         {  
  14.             byte a = 5;  
  15.             BitArray myBit1 = new BitArray(a);//5个字位,初始化为false  
  16.             //myBit1为5位,取用默认初始化,5位都为 False。即为0,由此可见,平时一位的值0和1在C#里面变成False和True;  
  17.             myBit1[0] = true;  
  18.             myBit1[1] = true;  
  19.               
  20.             Console.Write("my Bit1     Count:{0},length:{1},值如下:\n", myBit1.Count, myBit1.Length);  
  21.             PrintValues(myBit1, 8);//每8个元素为一行打印元素  
  22.   
  23.             byte [] myByte1 = new byte[] { 1, 2, 3, 4, 5 };//字节数组,byte为0-255的类型  
  24.             BitArray myBit2 = new BitArray(myByte1);  
  25.             //使用myByte1初始化myBit2;共有5*8个字节位;  
  26.             //myByte2为byte数组,内容为1,2,3,4,5;二进制就是00000001,00000010,00000011,00000100,00000101,myBA3就为相应的5*8=40位  
  27.             //在myByte2中数字按照二进制数从右到左存取  
  28.             Console.Write("my  Bit2     Count:{0},length:{1},值如下:\n", myBit2.Count, myBit2.Length);  
  29.             PrintValues(myBit2, 8);//每8个元素为一行打印元素  
  30.   
  31.             bool[] myBools = new bool[5] { truefalsetruetruefalse };  
  32.             BitArray myBA4 = new BitArray(myBools);  
  33.             //看输出,bool就想当于一位,myBools是长度为5的数组,变成myBA4后,也是5位;  
  34.             Console.Write("myBA4     Count:{0},length:{1},值如下:\n", myBA4.Count, myBA4.Length);  
  35.             PrintValues(myBA4, 8);//每8个元素为一行打印元素  
  36.   
  37.             int[]  myInts  = new int[5] { 6, 7, 8, 9, 10 };  
  38.             BitArray myBA5 = new BitArray( myInts );  
  39.             //int是32位的,5个,换成BitArray当然就是5*32=160。  
  40.             Console.Write("myBA5    Count:{0},length:{1},值如下:\n", myBA5.Count, myBA5.Length);  
  41.             PrintValues(myBA5, 8);//每8个元素为一行打印元素  
  42.   
  43.   
  44.   
  45.   
  46.   
  47.             Console.ReadKey();  
  48.   
  49.         }  
  50.         public static void PrintValues(IEnumerable myList, int myWidth) //myWidth指定每行显示的个数  
  51.         {  
  52.             int i = myWidth;  
  53.             foreach (Object obj in myList)  //迭代一列数  
  54.             {  
  55.                 if (i <= 0)  
  56.                 {  
  57.                     i = myWidth;  
  58.                     Console.WriteLine();  
  59.                 }  
  60.                 i--;  
  61.                 Console.Write("{0,7}", obj);//显示第0个数据obj,占7个符号的位置  
  62.                   
  63.             }  
  64.             Console.WriteLine();  
  65.         }  
  66.     }  
  67. }  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值