Что я испортил в этом для цикла? - PullRequest
0 голосов
/ 05 ноября 2019

Так что я пытаюсь достичь здесь, в основном, делая подсеть lookup (в сети).

for (i = 0; i < sorEgy.Length; i++)
{
    if (sorEgy[i] == 1 && sorKetto[i] == 1)
    {
        Console.Write("1");
    }
    else
    {
        Console.Write("0");
    }
}

sorEgy - это заданный IP в двоичном формате: 11000000101010000000000000100000 дляданный IP равен 192.168.0.32.

sorKetto является двоичной маской: 11111111111111111111111100000000 для / 24, что означает 24 1-с.

С этим для цикла я хотел записать 1 в выводеесли обе строки имеют 1 при i , и пишут 0, если они не совпадают. Я не могу придумать, в чем проблема.

1 Ответ

2 голосов
/ 05 ноября 2019

Индексируемые значения - это строки вида "100101010101111" ... Оператор индекса в строке выдает char, а char можно сравнить с int, что вы делаете. Но int - это Unicode 16-битная кодировка этого символа, а не текст этого символа.

Unicode-кодировка 1 - это непечатаемый код форматирования для «начала заголовка», а не символа 1. Если вы хотите сравнить с символом 1, используйте '1', а не 1, или используйте кодировку Unicode символа 1, которая равна 49. Предпочтительный способ сделать это - '1', поскольку сравнение с 49 выглядит, по меньшей мере, странно.

...