• ベストアンサー

[再質問]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 よろしくお願いします。

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

あんまり、良いプログラムとはいえないですが、サンプルを作ってみました。 using System; public class binToBytes { public static void Main() { String binString = "1010111100101100"; Byte[] bytes = new Byte[binString.Length / 8]; Byte wk=0; for(int i=0;i<binString.Length;i++){ wk = (Byte)(wk*2 + Char.GetNumericValue(binString, i)); if((i+1)%8==0){ bytes[i/8]=wk; wk=0; } } // 表示 for(int i=0;i<bytes.Length;i++){ Console.Write( "{0:X}",bytes[i]); } } }

manky1225
質問者

お礼

ありがとうございます。試してみます。

manky1225
質問者

補足

無事動きました。とりあえず、電子透かしのプログラムが完成しました。みなさん、ありがとうございました。

その他の回答 (1)

回答No.2

8bit分の変換をN回繰り返すだけのことですが、何がわからんのですか?

manky1225
質問者

お礼

文字列と数値の関係がよく分からないです。一応基本情報処理は持っているんですが、かなり前にとったので(笑)。最近は他の事に興味があり、プログラミングはあんまり勉強する気にならなくて、ろくに調べもせず質問してしまいすみません。いろいろありがとうございました。また、お願いします。