Я хочу преобразовать свой текст в двоичный код и в XOR с некоторым значением, но я получаю сообщение об ошибке:
System.InvalidCastException: Невозможно наложить объект типа "System.Text.StringBuilder" на тип "System.IConvertible".
Мой код:
public static string StringToBinary(string data)
{
StringBuilder sb = new StringBuilder();
foreach (char c in data.ToCharArray())
{
sb.Append(Convert.ToString(c, 2).PadLeft(8, '0'));
}
var abc = Convert.ToInt32(sb);
var k = abc ^ 210;
return k.ToString();
}
Похоже, я не могу преобразовать двоичный код в int. Есть ли другой способ сделать это?
Поскольку у вас есть целочисленное значение в этой строке data
, вы можете попробовать использовать класс Convert
, где вы можете передать базу, которую хотите преобразовать. Двоичная база 2
, поэтому попробуйте следующее:
public static string StringToBinary(string data)
{
int result = Convert.ToInt32(data, 2);
return result.ToString();
}
Почему бы вам не использовать встроенный метод. Вы можете просто передать base
как 2
в функции Convert.ToInt32
.
int outputAsInt = Convert.ToInt32(data, 2);
или если вы хотите получить вывод в строке, просто используйте функцию.ToString().
string outputAsString = Convert.ToInt32(data, 2).ToString();
StringBuilder
не являетсяstring
. Вы можете использоватьsb.ToString()
чтобы получить строковое значение, но, как говорили другие, в этом нет необходимости.