【C#】ビットを直感的に操作するクラスが無いので作る

2023.04.25

CATEGORY : プログラミング

あんみんどうふです。

C#はビット操作するクラスが標準搭載されていません。なんで?

ないものはないので自分で作ります。

Bitクラスの作成

クラス名はわかりやすくBitという名前にします。

Bitsというリストにビットを持たせています。0と1だけならboolで表現可能なのでList<bool>型です。

最後のBitクラスに引数にint型の数値を入れると配列に変換するようにしています。

 

2進数を文字列で出力

Bitsをそのまま順に取得すると逆に並んでしまうので、Reverseで一旦逆に入れ替えてから取得しています。

引数padは0埋めする桁数を指定できます。

 

 

数値に変換 (+範囲指定)

Bitsリスト内の各ビットを1ビットずつ左にずらしながら足していくことで数値に変換しています。

startはビットの開始位置、lengthは開始位置から数えたビットの長さ(取得する量)。指定しない場合、Bits全体を変換します。

 

 

ビットを直接変更

indexを指定することで直接値を取得・セットが可能です。

 

 

Byteコレクションをビット化

List、配列等のコレクションをビット化します。

 

 

ビットをbyte配列で取得

開始位置(start)、長さ(length)を指定してbyte配列として取得します。指定が無い場合、Bits全体を変換します。

 

 

int型の数値をセット

開始位置(start)から長さ(length)の分だけ数値(value)をセットします。

 

 


C#、BitConverterぐらいじゃ全然物足りないのでもっと軽率にビット演算系標準搭載してもらって構わないです。

以上。