Можно закодировать строку в побайтовом представлении, используя Encoding, например, UTF-8:
const string str = "Out of cheese error";
byte[] bytes = Encoding.UTF8.GetBytes(str);
Затем вернуть строковый объект .NET:
string strAgain = Encoding.UTF8.GetString(bytes);
Если, необходимо, чтобы представление было в виде серии ‘1’и ‘0’ символов это тоже возможно:
string binStr = string.Join("", bytes.Select(b => Convert.ToString(b, 2)));
Но необходимо подумать, зачем вы это делаете.
Кодировки берут абстрактную строку (в том смысле, что они являются непрозрачным представлением ряда кодовых точек Unicode) и отображают их в конкретную серию байтов. Байты бессмысленны (опять же, потому что они непрозрачны) без кодировки. Но с помощью кодировки их можно снова превратить в строку.
Например, у вас есть строка, содержащая ‘é’ и она не имеет представления ASCII, и поэтому определенно не может быть представлена с использованием последовательности байтов ASCII, даже если она может мирно существовать в string-объекте .NET.
См. статью Джоэла Спольски для дальнейшего чтения.
Полный пример кода представлен ниже:
using System;
using System.Text;
using System.Linq;
namespace Test
{
class Program
{
public static void Main(string[] args)
{
const string str = "Out of cheese error";
byte[] bytes = Encoding.UTF8.GetBytes(str);
string binStr = string.Join("", bytes.Select(b => Convert.ToString(b, 2)));
string strAgain = Encoding.UTF8.GetString(bytes);
Console.WriteLine(binStr);
Console.WriteLine(str == strAgain);
Console.Write("Press any key to continue . . . ");
Console.ReadKey(true);
}
}
}