• ベストアンサー

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