C#二进制到字符串

本文关键字:字符串 二进制 | 更新日期: 2023-09-27 17:58:47

我正在使用string messaga = _serialPort.ReadLine();从串行端口读取当i Console.WriteLine(messaga);随机字符出现在屏幕上时,这是合乎逻辑的,因为二进制数据是非ASCII的。我想我使用的方法将数据处理为ascii。我想做的是创建一个字符串var,并为其指定来自端口的二进制原始数据,所以当我控制台时。写这个var时,我想看到一个包含二进制数据的字符串,如1101101110001011010和NOT字符。我该怎么办?

C#二进制到字符串

从C#中如何将字符串从ascii转换为二进制?

foreach (string letter in str.Select(c => Convert.ToString(c, 2)))
{
  Console.WriteLine(letter);
}

你是这样说的吗?

class Utility
{
  static readonly string[] BitPatterns ;
  static Utility()
  {
    BitPatterns = new string[256] ;
    for ( int i = 0 ; i < 256 ; ++i )
    {
      char[] chars = new char[8] ;
      for ( byte j = 0 , mask = 0x80 ; mask != 0x00 ; ++j , mask >>= 1 )
      {
        chars[j] = ( 0 == (i&mask) ? '0' : '1' ) ;
      }
      BitPatterns[i] = new string( chars ) ;
    }
    return ;
  }
  const int BITS_PER_BYTE = 8 ;
  public static string ToBinaryRepresentation( byte[] bytes )
  {
    StringBuilder sb = new StringBuilder( bytes.Length * BITS_PER_BYTE ) ;
    foreach ( byte b in bytes )
    {
      sb.Append( BitPatterns[b] ) ;
    }
    string instance = sb.ToString() ;
    return instance ;
  }
}
class Program
{
  static void Main()
  {
    byte[] foo = { 0x00 , 0x01 , 0x02 , 0x03 , } ;
    string s   = Utility.ToBinaryRepresentation( foo ) ;
    return ;
  }
}

刚才对此进行了基准测试。上面的代码比使用Convert.ToString()快大约12倍,如果将校正添加到以"0"开头的pad,则快大约17倍。