Вы можете закодировать строку в побайтное представление, используя Encoding
, например, UTF-8:
var str = "Out of cheese error";
var bytes = Encoding.UTF8.GetBytes(str);
Чтобы вернуть строковый объект .NET:
var strAgain = Encoding.UTF8.GetString(bytes);
// str == strAgain
Вы, кажется, хотите, чтобы представление представляло собой последовательность символов '1'
и '0'
; Я не уверен, почему вы это делаете, но это тоже возможно:
var binStr = string.Join("", bytes.Select(b => Convert.ToString(b, 2)));
Кодировки берут абстрактную строку (в том смысле, что они являются непрозрачным представлением серии кодовых точек Unicode) и отображают их в конкретную серию байтов. Байты бессмысленны (опять же, потому что они непрозрачны) без кодировки. Но с помощью кодировки их можно превратить в строку.
Вы, кажется, путаете "ASCII" со строками; ASCII - это просто кодировка , которая имеет дело только с кодовыми точками до 128. Если у вас есть строка, содержащая, например, 'é'
, она не имеет представления ASCII, и поэтому совершенно определенно не может быть представлена с использованием последовательность байтов ASCII, даже если она может мирно существовать в объекте .NET string
.
См. эту статью Джоэла Спольски для дальнейшего чтения.