Преобразовать двоичную строку в int c# - PullRequest
0 голосов
/ 13 апреля 2020

У меня есть этот код:

string result = "";
        foreach(char item in texte)
        {
            result += Convert.ToString(item, 2).PadLeft(8, '0');
        }

Итак, у меня есть строка с именем result, которая является преобразованием слова типа 'bonjour' в двоичном виде. для texte = "bonjour" у меня есть строковый результат = 0110001001101111011011100110101001101111010100110111101010011011110111010101110010 как тип integer.

И когда я делаю

Console.writeLine(result[0])

, я получаю 0, нормально, что я ожидал, но если я делаю

Console.WriteLine((int)result[0])

или

Console.WriteLine(Convert.ToInt32(result[0]))

Я получаю 48 !!! Я не хочу 48, я хочу 0 или 1 в типе integer.

Не могли бы вы помочь мне, пожалуйста?

Ответы [ 3 ]

0 голосов
/ 13 апреля 2020

Вы можете просто вычесть из него 48!

Console.WriteLine(result[0] - 48);

, потому что цифры 0-9 символов закодированы как 48-57.

Если вы хотите получить доступ к каждому биту по индексу, Я предлагаю использовать BitArray вместо:

var bytes = Encoding.ASCII.GetBytes("someString");
var bitArray = new BitArray(bytes);
// now you can access the first bit like so:
bitArray.Get(0) // this returns a bool
bitArray.Get(0) ? 1 : 0 // this gives you a 1 or 0
0 голосов
/ 13 апреля 2020

Просто сделайте это Console.WriteLine(Convert.ToInt32(Convert.ToString(result[0])));

Вы ожидаете, что он будет вести себя так же, как Convert.ToInt32(string input), но на самом деле вы вызываете Convert.ToInt32(char input), и если вы проверите документы, они явно заявят, что он вернется значение Юникода (в данном случае совпадает со значением ASCII).

http://msdn.microsoft.com/en-us/library/ww9t2871 (v = vs.110) .aspx

0 голосов
/ 13 апреля 2020
string a = "23jlfdsa890123kl21";
byte[] data = System.Text.Encoding.Default.GetBytes(a);
StringBuilder result = new StringBuilder(data.Length * 8);
foreach (byte b in data)
{
    result.Append(Convert.ToString(b, 2).PadLeft(8, '0'));
}

Вы можете попробовать этот код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...