配列に優先度を付けて値を取得したい。
質問
配列の要素に優先順位を付けてその順番で値を取得したいです。
取得優先順位 876E5D4C3B2A1
DataTable table = new DataTable();
string[] number = new string[] { "E", "D", "C", "B", "A", "8", "7", "6", "5", "4", "3", "2", "1" };
for (int i = 1; i < 8191; i++) {
//整数を2進数に変換
//※ 1 = 0000000000001
string bitConvert = Convert.ToString(i, 2).PadLeft(13, '0');
var dRow = table.NewRow();
dRow[0] = i;
StringBuilder getNo = new StringBuilder();
for (int s = 0; s < bitConvert .Length; s++) {
string st = bitConvert [s].ToString();
if (st == "0") continue;
if (st == "1") {
getNo.Append(number[s]);
}
}
dRow[1] = getNo.ToString();
1から255は期待通り取得できるのですが、256からはA~E入ってきます。
例えば、
for文のiが256ならA
for文のiが257ならA1
と取得ができるはずです。
ここまでは期待値通りなので問題はなかったのですが、
258から少し特殊な方法で配列の要素を取得しないといけなくなりました。
iが258のとき取得した結果配列の並びはA2になります。
しかし、2Aにしたいです。
271ならA4321となるのですが、期待値は432A1。
結論から言うと
1の左にA2の左にB3の左にC4の左D5の左にEを並べたいです。
876E5D4C3B2A1のような状態を作りたいです。
今のプログラムだとEDCBA87654321という並びになってしまいます。
ここなどを参考にしたのですが、よくわかりませんでした。
どなたかご教授いただけますでしょうか?
よろしくお願いします。