Получилось перевести текст в binary, но обратно не получается.
Перевод в двоичный:
public string StringToBinary(string data)
{
StringBuilder sb = new StringBuilder();
foreach (char c in data.ToCharArray())
{
sb.Append(Convert.ToString(c, 2));
}
return sb.ToString();
}
Обратно делаю так:
StringBuilder sb = new StringBuilder();
foreach (char c in cent.ToCharArray())
{
sb.Append(Convert.ToString(c, 8));
}
return sb.ToString();
Во 2ом случае, выводится следущее:
616060616160616...
пару сотен строк, состоящие из этого.
Если я вас правильно понял, то вам нужно перевести ваш текст в двоечную строку, и потом и саму двоечную строку назад в текст. Для перевода текста в двоечный вид нужно знать кодировку вашего текста (UTF8 хватает в большинстве случаев) и перевести текст в массив байтов с нужной кодировкой методом System.Text.Encoding.UTF8.ToBytes(myString);
. После чего каждый байт необходимо перевести в двоечную строку:
public static string ToBinaryString(byte[] data)
{
return string.Join("", data.Select(byt => Convert.ToString(byt, 2).PadLeft(8, '0')));
}
В даном методе происходит следующеё:
data.Select(...)
)Convery.ToString(byt, 2)
)().PadLeft(8, '0');
)string.Join("", strings);
, где "" это разделитель между строками (в нашем случае он не нужен, поетому пустая строка).Перевод из бинарной строки в обычную происходит в обратном порядке. Для начала получаем байты:
public static byte[] ToByteArray(string binaryString)
{
int numOfBytes = binaryString.Length / 8;
byte[] bytes = new byte[numOfBytes];
for (int i = 0; i < numOfBytes; i++)
{
string oneBinaryByte = binaryString.Substring(8 * i, 8);
bytes[i] = Convert.ToByte(oneBinaryByte, 2);
}
return bytes;
}
Так как в одном байте 8 битов, то в цикле берем подстроки по 8 символов и переводим в байт. Потом методом Encoding.UTF8.GetString(bytesOfNewString);
переводим в строку.
Вот вам пример со всем кодом:
public static string ToBinaryString(byte[] data)
{
return string.Join("", data.Select(byt => Convert.ToString(byt, 2).PadLeft(8, '0')));
}
public static byte[] ToByteArray(string binaryString)
{
int numOfBytes = binaryString.Length / 8;
byte[] bytes = new byte[numOfBytes];
for (int i = 0; i < numOfBytes; i++)
{
string oneBinaryByte = binaryString.Substring(8 * i, 8);
bytes[i] = Convert.ToByte(oneBinaryByte, 2);
}
return bytes;
}
static void Main(string[] args)
{
string originString = "Мой супер текст!";
Console.WriteLine($"Первоначальная строка: '{originString}'");
byte[] bytesOfString = Encoding.UTF8.GetBytes(originString);
string binaryString = ToBinaryString(bytesOfString);
Console.WriteLine($"Двоечная строка: '{binaryString}'");
byte[] bytesOfNewString = ToByteArray(binaryString);
string newOriginString = Encoding.UTF8.GetString(bytesOfNewString);
Console.WriteLine($"Конвертированя строка из двоечной: '{newOriginString}'");
Console.ReadKey();
}
Примеры кода взяты из ответов на отдельные тематики:
Конвертация строки в двоечную
Конвертация двоечной строки в массив байтов
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Делаю аис для аэропорта, в рамках курсового проектаДля удобного использования бд решил делать фильтрация в реальном времени
Необходимо повернуть PictureBox на x градусов при нажатии на кнопкуПока что нашел только поворот через bitmap1
В окне формы ввожу логин и пароль, затем selenium заходит на сайт, авторизуется, забирает необходимые данные и записывает их в comboBox1 на этой же формеПользователь...
К примеру есть файлcpp, в нем есть метод, который не относится не к какому пространству method(wchar_t ch) {