2014年4月23日水曜日

[C#]ビットシーケンス反転

ビット情報を反転ではないのですが、並び順の入れ替え要件がありましたので、作ってみました。BitArray で後ろから詰め替えているだけです。

        /// <summary>
        /// ビットシーケンス反転
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        public static byte[] ReverseBitSequence(byte[] data)
        {
            if (data == null)
                throw new ArgumentNullException();

            // 初期値設定
            var maxLength = data.Length * 8;
            byte[] result = new byte[data.Length];
            var source = new BitArray(data);
            var target = new BitArray(maxLength);

            // 反転
            for (int index = 0; index < maxLength; index++)
            {
                target.Set(maxLength - index - 1, source.Get(index));
            }

            // 結果
            target.CopyTo(result, 0);
            return result;
        }





0 件のコメント:

コメントを投稿