詳細なモニター情報を取得するために、SetupAPI 呼び出しから EDID ブロック (バイト単位) を収集しています。
EDIDのドキュメントにあるように、一部のバイトには「5 ビット文字」が格納されています。
頭痛の種からあなたを救うために、簡単に理解できるスキームを添付します。
ご覧のとおり、バイトから 5 ビットの文字を抽出する必要があります。
バイトを BitArray に分割することはできましたが、それらのビットを文字に変換する方法がわかりません。
ウィキにも次のように書かれています。
"00001=A”; “00010=B”; ... “11010=Z”.
さて、これらのビットを変換するための最も速くて最も簡単な方法は何ですか?
次のような Dictionary オブジェクトを事前定義できると思います。
Dictionary<BitArray, char> letters = new Dictionary<BitArray, char>();
letters.Add(new BitArray(new int[] { 0, 0, 0, 1 }), Convert.ToChar("A"));
letters.Add(new BitArray(new int[] { 0, 0, 1, 0 }), Convert.ToChar("B"));
それを検索しますが、最初に「00010=B」の後に「11010=Z」をたどる方法がわかりません。次に、もっと適切な方法があるに違いないと確信しています。
ご協力いただきありがとうございます。