本文整理汇总了C#中System.Collections.BitArray.ConvertBitsToWord方法的典型用法代码示例。如果您正苦于以下问题:C# BitArray.ConvertBitsToWord方法的具体用法?C# BitArray.ConvertBitsToWord怎么用?C# BitArray.ConvertBitsToWord使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Collections.BitArray
的用法示例。
在下文中一共展示了BitArray.ConvertBitsToWord方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ReadMessage
/// <summary>
/// Expected 471 length
/// </summary>
/// <returns></returns>
public string ReadMessage()
{
var bmpPixelEnumerator = new BitmapPixelEnumerator(_img);
var encodedLength = bmpPixelEnumerator.Take(PixelsWithMessageLengthAndPadding).ToArray();
int indexLengthBit = 0;
var ba = new BitArray(BitsWithMessageLengthAndPadding);
foreach (var pixel in encodedLength)
{
indexLengthBit = ReadTwoBits(pixel.Blue, ba, indexLengthBit);
indexLengthBit = ReadTwoBits(pixel.Green, ba, indexLengthBit);
indexLengthBit = ReadTwoBits(pixel.Red, ba, indexLengthBit);
}
var messageLength = ba.ConvertBitsToWord();
int indexMessageBit = 0;
var messageBitArray = new BitArray(messageLength * PixelsWithMessageLengthAndPadding);
bmpPixelEnumerator.Reset();
var encodedPixels = bmpPixelEnumerator.Skip(PixelsWithMessageLengthAndPadding).Take((int)Math.Ceiling(messageLength * (double)PixelsWithMessageLengthAndPadding / (double)BitsPerPixel));
foreach (var pixel in encodedPixels)
{
indexMessageBit = ReadTwoBits(pixel.Blue, messageBitArray, indexMessageBit);
if (indexMessageBit >= messageBitArray.Count)
{
break;
}
indexMessageBit = ReadTwoBits(pixel.Green, messageBitArray, indexMessageBit);
if (indexMessageBit >= messageBitArray.Count)
{
break;
}
indexMessageBit = ReadTwoBits(pixel.Red, messageBitArray, indexMessageBit);
if (indexMessageBit >= messageBitArray.Count)
{
break;
}
}
byte[] messageBytes = new byte[messageLength];
messageBitArray.CopyTo(messageBytes, 0);
var message = Encoding.ASCII.GetString(messageBytes);
return message;
}