当前位置: 首页 > 编程语言 > C#

移动BitArrayShare

时间:2023-04-10 16:53:58 C#

移动BitArray我正在尝试移动BitArray,同时保持其长度。由于没有内置方法,我正在尝试构建一个,但不幸的是无法让它工作。我的初始BitArray代码将BitArray的长度设置为421。varb=newBitArray(长度:421);比,我正在分配一些值进行测试。例如:b.Set(0,true);b.Set(1,true);但是,我不知道如何移动位数组。尝试:-我想我可以将它转换为long而不是进行位操作。但是,long与我的确切BitArray长度不匹配,这会在我对两个BitArrays应用按位运算时导致错误(我的完整要求是(array1|=array2>>20)。-我正在尝试将BitArray转换为byte[],进行操作并返回它(参见移位N位):publicstaticbyte[]ToBytesArray(thisBitArrayarray,intstartIndex,intcount){//Get存储所有字节所需的字节大小intbytesize=count/ByteLength;//如果(count%ByteLength>0){bytesize++;}//对于结果byte[]bytes=newbyte[bytesize];//必须初始化为正确的值,所有零位字节的值为零//最低有效位的位值为1,每个位置//向左将值字节值加倍value=0;字节重要性=1;intbytepos=0;intbitpos=startIndex;while(bitpos-startIndex=8){Array.Copy(value,bitcount/8,temp,0,temp.Length-(bitcount/8));}else{Array.Copy(value,temp,temp.Length);}if(bitcount%8!=0){for(inti=0;i8-比特数%8);}}}返回新的BitArray(临时);但是bytes的长度是8,同样不适合我的长度。结果是416或424(另一个字节)而不是421。我也检查了SO(例如BitArray-Shift位)但对我没有任何作用。任何帮助将不胜感激!仍然不能100%确定问题出在哪里。这是一个简单的实现:voidMain(){//创建并初始化一个大小为7的BitArrays(你有421)。bool[]myBools=newbool[7]{true,false,false,true,true,false,true};BitArraymyBA1=newBitArray(myBools);打印位数组(myBA1);//1001101PrintBitArray(ShiftRight(myBA1));//0100110PrintBitArray(ShiftLeft(myBA1));//0011010}BitArrayShiftRight(BitArrayaSource){bool[]new_arr=newbool[(aSource.Count)];for(inti=0;i注意这些位是如何在循环中复制的,第三个PrintBitArray是在原始输入上完成的,而不是第二个在结果上完成的。以上就是C#学习教程:ShiftingBitArray分享的全部内容。如果对你有用,需要进一步了解C#学习教程,希望你多多关注---publicstaticbool[]Left_shiftBitArray(bool[]Array,intcount){Array=BitArray_LRotat(Array,count);对于(inti=Array.GetLength(0)-1;i>=(Array.GetLength(0)-count);i--){Array[i]=false;}返回数组;}publicstaticbool[]BitArray_LRotat(bool[]input,intx){//bool[]temp=newbool[input.Length];bool[]final=newbool[input.Length];对于(inti=input.Length;i>x;i--){final[i-x-1]=input[i-1];}for(inti=x;i>0;i--){final[(input.Length)-i]=input[x-i];}返回最终;}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: