Пытается преобразовать строку в массив без пробелов в строке C#

Хорошо, я просто как бы понял, как превратить 8-значный двоичный код в числа (или я так думаю), и что лучший способ выучить его, чем создать программу, которая сделает это за вас! и хорошо, я как бы застрял. Я пытаюсь понять, как преобразовать строку в массив строк [], чтобы я мог пройти через нее и сложить все вместе, но, похоже, я не могу найти ничего подобного без пробела или чего-то еще. у кого-нибудь есть идеи? вот мой код.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace binary_to_number
{
    class Program
    {
        static int GetAddition(int place)
        {
            switch(place) // goes through the switch until if finds witch place the binary is in 
            {
                case 1:
                    return 128;
                case 2:
                    return 64;
                case 3: return 32;
                case 4: return 16;
                case 5: return 8;
                case 6: return 4;
                case 7: return 2;
                case 8: return 1;
                default: return 0;


            }

        }

        static int ToInt(string input)
        {
            string[] binary = input.Split(); // right here is where im stuck 
            int thenumber = 0; // this is the number it adds to
            for(int i = 0;i < 9;i++)
            {
                Console.WriteLine(binary[i]);
            }
            return thenumber;
        }


        static void Main(string[] args)
        {

            while (true)
            {
                Console.WriteLine("Please put in a 8-digit binary");
                string input = Console.ReadLine();
                if (input.Length < 9) // binary has 8 digits plus the null at the end of each string so if its 
                { // not binary

                    Console.WriteLine(ToInt(input)); // function converts the input into binary
                }

            }



        }


    }
}

Подсказка: строка - это массив char. Можете проверить if (input[i] == '1') { } else if (input[i] == '0') {}

Llama 17.12.2018 06:52

вы можете использовать метод replace как input.Replace ("", string.Empty);

Manish Jain 17.12.2018 07:05

Вы можете фильтр все (двоичные) цифры и объединить их обратно в строку: string result = input.Concat(source.Where(c => c >= '0' && c <= '1'));

Dmitry Bychenko 17.12.2018 07:49

Боковое примечание: вам может быть интересно узнать о Convert.ToInt32(stringRepresentation, integerBase) метод.

Clockwork-Muse 17.12.2018 08:47
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
4
86
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Надеюсь, что это поможет вам. String реализует интерфейс IEnumerable, который предоставит вам Enumerator для выполнения итерации.

        Console.WriteLine("Please enter 8 digit binary number");
        string input = Console.ReadLine();
        foreach (var item in input)
        {
            Console.WriteLine("Item is {0}", item);
        }

Здесь вам не нужно вызывать ToCharArray, поскольку строка также реализует IEnumerable <char>.

ckuri 17.12.2018 09:21

Спасибо. Отредактировал ответ.

R.Sarkar 17.12.2018 09:40

Чтобы начать исправлять вашу программу:

string[] binary = input.Split(); // right here is where im stuck

должно быть

char[] binary = input.ToCharArray();

Также for (int i = 0; i < 9; i++) должен быть for (int i = 0; i < 8; i++) или лучше for (int i = 0; i < binary.Length; i++)


Способ лучше?

Вы можете сэкономить много кода, используя класс Convert.

while (true)
{
    Console.WriteLine("Please put a value as binary");
    string input = Console.ReadLine();
    var number = Convert.ToUInt16(input, 2);

    Console.WriteLine($"input:{input}, value: {number}, as binary: {Convert.ToString(number, 2)}");
}
/*
Please put a value as binary
1
input:1, value: 1, as binary: 1

Please put a value as binary
11
input:11, value: 3, as binary: 11

Please put a value as binary
10000001
input:10000001, value: 129, as binary: 10000001
*/

Другие вопросы по теме