- ベストアンサー
VC#で2進数の文字列をバイト列に変換する方法
No.1021748で質問した者です。前回はバイト列を2進数の文字列に変換する方法を質問しましたが、今回はその逆の方法を教えて下さい。 例えば、stringに01101111という文字列が入ってる場合には、バイト列0x6Fに変換したいです。お願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
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")); } } …これだけのことなんだけど…
その他の回答 (4)
- JaritenCat
- ベストアンサー率37% (122/322)
一般に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)
こんな感じでどうでしょうか。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)
int iResult = 0; int iPos = 0; for( ; string[iPos] ; iPos++ ){ iResult *= 2; if( string[iPos] == '1' ){ iResult += 1; } } かな? バグがあるかもしれませんが・・・。 ちなみにCまたはC++コードです。
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
なにがわかりませんか? 一文字ずつ見ていくだけでしょうに。
お礼
またまた、ありがとうございます。