将字符串转换为二进制零和1

时间:2013-05-20 23:18:13

标签: c# string binary

我想将字符串转换为二进制,我尝试了这段代码

byte[] arr = System.Text.Encoding.ASCII.GetBytes(aa[i]);

和这个

System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
byte[] arr= encoding.GetBytes(aa[i]);

但它返回的数字不是二进制数 如果我写'm'它将它转换为“0109” 我想转换为0和0只有一个 提前致谢

5 个答案:

答案 0 :(得分:15)

以下是一个例子:

foreach (char c in "Test")
    Console.WriteLine(Convert.ToString(c, 2).PadLeft(8, '0'));

答案 1 :(得分:3)

我不确定我是否完全理解您的问题,但如果您想将文本转换为二进制文件,那就是如何完成的:

public byte[] ToBinary(string stringPassed)
{
   System.Text.ASCIIEncoding  encoding = new System.Text.ASCIIEncoding();
   return encoding.GetBytes(stringPassed);
}

您需要传递整个字符串,而不是字符串中的字符。

答案 2 :(得分:1)

你可以使用: Convert.ToByte(string value,int fromBase)

根据MSDN:

  

fromBase   键入:System.Int32   值的基数,必须为2,8,10或16。

有关详情,请参阅此链接:Convert.ToByte()

答案 3 :(得分:1)

所以你可以得到字节,现在你想输出0和1。

单个byte b

var sb = new StringBuilder();
for(var i=7;i>=0;i--)
{
  sb.Append((b & (1<<i))==0?'0':'1');
}

答案 4 :(得分:0)

这样的事应该对你有用;

static string bytes2bin( byte[] bytes )
{
  StringBuilder buffer = new StringBuilder(bytes.Length*8) ;
  foreach ( byte b in bytes )
  {
    buffer.Append(lookup[b]) ;
  }
  string binary = buffer.ToString() ;
  return binary ;
}

static readonly string[] lookup = InitLookup() ;
private static string[] InitLookup()
{
  string[] instance = new string[1+byte.MaxValue] ;
  StringBuilder buffer = new StringBuilder("00000000") ;
  for ( int i = 0 ; i < instance.Length ; ++i )
  {

    buffer[0] = (char)( '0' + ((i>>7)&1) ) ;
    buffer[1] = (char)( '0' + ((i>>6)&1) ) ;
    buffer[2] = (char)( '0' + ((i>>5)&1) ) ;
    buffer[3] = (char)( '0' + ((i>>4)&1) ) ;
    buffer[4] = (char)( '0' + ((i>>3)&1) ) ;
    buffer[5] = (char)( '0' + ((i>>2)&1) ) ;
    buffer[6] = (char)( '0' + ((i>>1)&1) ) ;
    buffer[7] = (char)( '0' + ((i>>0)&1) ) ;

    instance[i] = buffer.ToString() ;
  }
  return instance ;
}