DOBON.NET DOBON.NETプログラミング掲示板過去ログ

16進文字列を1ビットずつ反転

環境/言語:[Windows XP C# VisualStudio2010]
分類:[.NET]

2012/04/17(Tue) 15:10:25 編集(投稿者)

こんにちは

TextBoxに16進文字列を入力してもらいます。
これを1ビットずつ取得、反転?ひっくり返し、
最後にそのデータをくっつけて
TextBox2に表示したいです。


例)TextBox.Text = "4FD85E";
  反転 4F(01001111) → F2(11110010)
    D8(11011000) → 1B(00011011)
    5E(01011110) → 7A(01111010)
  TextBox2.Text = "F21B7A";

どのようにやったらいいのか
全く想像が付かず困っています。
ひっくり返す方法がわかりません。
1ビットずつ見て、シフトしていく方法しかないのでしょうか?

お知恵をお貸し下さい。
よろしくお願いいたします。
■No30344に返信(真由さんの記事)

あまり試していませんがどうでしょう?

            string trs=String.Empty;
            for (int i = 0; i < textBox1.TextLength; i += 2)
            {
                string a = textBox1.Text.Substring(i, 2);
                int b= Convert.ToInt32(a,16);
                int c= 0;
                for (int j = 0; j < 8; j++)
                {
                    c += (b >> j) % 2 << (7 - j);
                }
                trs += c.ToString("X2");
            }
            textBox2.Text = trs;
■No30348に返信(shuさんの記事)
返信ありがとうございます。
> string trs=String.Empty;
> for (int i = 0; i < textBox1.TextLength; i += 2)
> {
> string a = textBox1.Text.Substring(i, 2);
> int b= Convert.ToInt32(a,16);
> int c= 0;
> for (int j = 0; j < 8; j++)
> {
> c += (b >> j) % 2 << (7 - j);
> }
> trs += c.ToString("X2");
> }
> textBox2.Text = trs;
この方法で出来ました。
ありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板