• ベストアンサー

VC#で2進数の文字列をバイト列に変換する方法

No.1021748で質問した者です。前回はバイト列を2進数の文字列に変換する方法を質問しましたが、今回はその逆の方法を教えて下さい。 例えば、stringに01101111という文字列が入ってる場合には、バイト列0x6Fに変換したいです。お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

class foo { public static void Main() { string input = "01101111"; int result = 0; foreach ( char c in input) { result = (result << 1) + (c == '1' ? 1:0); } // 結果確認 System.Console.WriteLine(result.ToString("X2")); } } …これだけのことなんだけど…

manky1225
質問者

お礼

またまた、ありがとうございます。

その他の回答 (4)

回答No.5

一般にN進数の文字列を数値に変換する方法 /* 答えの変数に0を入れておく */ result = 0; /* 文字列を参照するための変数を用意する */ p = string; /* 文字列の先頭から順番に計算する */ while(*p!='\0') {  result = result * N + henkan(*p)  p++; } /* 答えの表示 */ printf("%X\n",result); henkan()は文字を数値に変換する関数です。 2進数の場合なら *p=='1'?1:0 とか *p-'0'とかを返すようにします。

  • jun2004
  • ベストアンサー率42% (24/57)
回答No.3

こんな感じでどうでしょうか。1バイト分の変換例です。 string s = "01101111"; byte b = 0; for(int i=s.Length - 1,j=0;i>=0;i--,j++) if(s[i]=='1') b += (byte)Math.Pow(2,j); System.Diagnostics.Trace.WriteLine(b.ToString("X"));

  • txrx
  • ベストアンサー率45% (83/184)
回答No.2

int iResult = 0; int iPos = 0; for( ; string[iPos] ; iPos++ ){ iResult *= 2; if( string[iPos] == '1' ){ iResult += 1; } } かな? バグがあるかもしれませんが・・・。 ちなみにCまたはC++コードです。

回答No.1

なにがわかりませんか? 一文字ずつ見ていくだけでしょうに。

関連するQ&A

  • [再質問]VC#で2進数の文字列をバイト列に変換する方法

    No.1029439で質問して回答頂きましたが、もう一度お願いします。 string strに2進数の文字列がNバイト分入っているとします(0か1が8×N個入っている)。これを1バイト分ずつbyte型の配列に入れたいです。 例えば、str = "1010111100101100"と2バイト分入ってるときは、byte型の配列bytesに bytes[0] =0xAF(10101111) bytes[1] =0x2C(00101100) となるようにしたいです。 最終的には↓のようにして、文字を出力したいためです。 Encoding sjisEnc = Encoding.GetEncoding("Shift_JIS"); string str = sjisEnc.GetString(bytes); http://www.atmarkit.co.jp/fdotnet/dotnettips/011byte2str/byte2str.html よろしくお願いします。

  • 8桁文字列を16進数バイト配列に変換

    お世話になります。 VB2005を使用しています。 温調器から温度データを引っ張るプログラムを作成しています。 8桁の文字列を16進数バイト配列に変換したいのですが、GetBytesでは10進数バイト配列に変換されてしまいます。 8桁の文字列又は10進数バイト配列を16進数バイト配列に変換する方法はないでしょうか? 文字列を1文字ずつ16進数に変換して配列に組み込んでいくしかないのでしょうか? よろしくお願い致します。

  • 16進数の文字列を10進数の数値に変換する方法

    以下のように1バイト単位で区切られた16進数の文字列があったとします。 01 23 45 67 78 9A BC DE F0 これを10進数の数値に変換したいのですが、atoi()関数では無理のようです。 良い方法がありましたら教えていただけないでしょうか。 どうぞよろしくお願い致します。m(_ _)m

  • (再質問)VC#でテキストボックスに入力した文字列をビット列に変換

    No.1017874で質問して回答頂いたのですが、うまくいきませんでした。質問の仕方が悪かったのかもしれません。締切ってしまったので再質問します。 テキストボックスに入力した文字列を2進数の文字列(0と1)に変換したいのですが、下記のプログラムでは、2や8が含まれます。 例えば、"シ"はシフトJISでは16進数で8356なので、1000001101010110となってほしいのですが、下記プログラムでは128000001281280128012801281280となりました。 sb.Append(b & 0x80)の部分で(b & 0x80)が2進数10000000(10進数で128)の場合に10進数にしてsbに加えるためだと思いますが、 最上位ビット(この場合は1)だけを加えていくと、ほしい結果が得られそうです。 その方法を教えて下さい。 private void button2_Click(object sender, System.EventArgs e) { int i,j; Encoding sjisEnc = Encoding.GetEncoding("Shift_JIS"); string str = textBox1.Text; byte[] bytes = sjisEnc.GetBytes(str); StringBuilder sb = new StringBuilder(); for (i = 0; i < bytes.Length; i++) { byte b = bytes[i];    for (j = 0; j < 8; j++) { sb.Append(b & 0x80);      b <<= 1; } } String binaryString = sb.ToString(); textBox1.Text = binaryString ; } 参考ページ(文字列をシフトJISとしてバイト列に変換するには?) http://www.atmarkit.co.jp/fdotnet/dotnettips/010str2byte/str2byte.html

  • 文字列を大文字の2桁ごとのコンマ付き16進数に変換する方法

    文字列を大文字の2桁ごとのコンマ付き16進数に変換する方法がわかりません。ただ単に文字列を16進数に変更するだけならbin2hex()でできますけど、誰か知っている方はいませんか?具体的には、変換された文字列が1a2b3c4d5e6fなら、1A.2B.3C.4D.5E.6Fと変換したいんです。どうすればいいですか?

    • ベストアンサー
    • PHP
  • 16進数の文字列を文章に変える

    プログラミングに関しては全く分からない者です。 先日、とある文字列が友人から送られてきました。 0から9までの数字とaからfのアルファベットで構成されているので、16進数の暗号なのかと検討をつけました。 ネットで「16進数 文字列 変換」などと検索して、変換ツールなどを試してみたのですが、うまく変換されません。 Excelあたりを使って、どうにか解読する方法はありませんか? また、そういった文字列というのは、プログラミング言語や文字コードによって、同じ文章でも変わってしまうものなのでしょうか? よろしくお願いします。

  • 文字列のバイト数を調べる

    文字列の文字数は数えればわかりますが、そのバイト数となると数え方がわかりません。 数える方法を教えてください。 よろしくおねがいします。

  • 16進数を10進数文字列に変換する

    こんにちは。 お世話になります。 16進数を10進数文字列に変換する処理を作りたいのですが 方法が分かりません。 提供されている関数は使わずに変換する方法を知っている方がいたら教えていただきたいです。 以下は10進数を16進数に変換する関数を作ったものです。 void SetBinHex(BYTE Bin,BYTE *buff) { /*16進の変換*/ *(buff)=Bin/16; *(buff+1)=Bin%16; if(*(buff)>9) *(buff)=*(buff)+0x37; else *(buff)=*(buff)+0x30; if(*(buff+1)>9) *(buff+1)=*(buff+1)+0x37; else *(buff+1)=*(buff+1)+0x30; return ; } よろしくお願いします。

  • Unicodeを文字列に変換する方法

    16進数で表記されたデータを文字列に変換する方法がわかりません。 0x61がaと表示されるようにするにはどのようにしたらいいですか?

    • ベストアンサー
    • PHP
  • 文字列のバイト数を取得したい

    処理中に渡ってくる文字列のバイト数を取得したいのですが、 そういった関数はありませんでしょうか? 探しても見つかりませんでした。 文字列はUTF-8かSJISで渡ってきますので、両方に 対応していると嬉しいです。 対応していなければ渡ってくる前に文字コードを 変換します。 どなたかご教示下さい。

    • ベストアンサー
    • PHP

専門家に質問してみよう