最近这几天真的比较郁闷,却说不出为什么郁闷。很多事要做,但是都因为能力问题,时间都花得事倍功半。星期一又要来了,作业什么时候才能编好?C# BitArray(转载)
       今天早上在弄了一个早上的DES算法,要是引用C#内部已封装好的DES还不简单?设置好密钥和向量就可以了,但是这样老师给的分数不高啊,而且自己真的想自己写一个出来。写着写着突然发现以现在自己已自学到的水平还很不够,还没有深入地去操作过某类数据,例如比特。DES的明文64比特,分左右两部分,这好办,前32位是4个byte,后32位是4个byte。但是,密钥除去8位校检码,只有56位啊,分左右两个部分那就是28位,28%8!=0哦,怎么办?于是就想到自己对C#里的位操作还是一无所知。
       还好上网找了一下,看到了一线希望,是BitArray给我带来的希望。以下引用msdn的例子:

  1C# BitArray(转载)using System;
  2C# BitArray(转载)using System.Collections;
  3

      BitArray myBA1 = new BitArray( 5 );
      myBA1为5位,取用默认初始化,5位都为 False。即为0,由此可见,平时一位的值0和1在C#里面变成False和True;
      byte[] myBytes = new byte[5] { 1, 2, 3, 4, 5 };
      BitArray myBA3 = new BitArray( myBytes );
      myBytes为byte数组,内容为1,2,3,4,5;二进制就是00000001,00000010,00000011,00000100,00000101,myBA3就为相应的5*8=40位;
      bool[] myBools = new bool[5] { true, false, true, true, false };
      BitArray myBA4 = new BitArray( myBools );
      看输出,bool就想当于一位,myBools是长度为5的数组,变成myBA4后,也是5位;
      int[]  myInts  = new int[5] { 6, 7, 8, 9, 10 };
      BitArray myBA5 = new BitArray( myInts );
      int是32位的,5个,换成BitArray当然就是5*32=160。

      还应注意的是PrintValues方法,参数(IEnumerable myList, int myWidth ),foreach()循环,每行打印8个。有了这个我想DES做起来主要问题就不大了。做好了发上来给大家看看啊。

原文地址:http://www.cnblogs.com/lanse777/archive/2007/04/01/695801.aspx

相关文章:

  • 2021-09-11
  • 2021-11-29
  • 2021-08-04
  • 2021-07-03
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-12-27
  • 2021-08-24
  • 2022-12-23
  • 2021-05-30
  • 2023-03-31
相关资源
相似解决方案