Преобразование из цепочки битов в целое число - PullRequest
4 голосов
/ 13 сентября 2011

Мне нужна функция типа

int GetIntegerFromBinaryString(string binary, int bitCount)

, если двоичный = "01111111" и bitCount = 8, он должен вернуть 127

, если двоичный = "10000000"и bitCount = 8, он должен возвращать -128

Числа сохраняются в форме дополнения до 2.Как мне это сделать.Есть ли какие-то встроенные функции, которые бы помогли, чтобы мне не нужно было вычислять вручную.

Ответы [ 2 ]

5 голосов
/ 13 сентября 2011

Добавьте строку с 0 или 1, чтобы получить значение до bitCount, и введите int number = Convert.ToInt16("11111111"+"10000000", 2);

3 голосов
/ 13 сентября 2011

вот, пожалуйста.

    static int GetIntegerFromBinaryString(string binary, int bitCount)
    {
        if (binary.Length == bitCount && binary[0] == '1')
            return Convert.ToInt32(binary.PadLeft(32, '1'),2);
        else
            return Convert.ToInt32(binary,2);
    }

Преобразуйте его в версию 32-битного числа, дополняющую 2-е число, а затем просто позвольте методу Convert.ToInt32 творить чудеса.

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