Згладжуйте біти в один рядок

Я хочу зв'язати деякі біти в один. Я маю цей метод:

public BitArray Encode(string source)
{
    List encodedSource = new List();

    for (int i = 0; i < source.Length; i++)
    {
        List encodedSymbol = this.Root.Traverse(source[i], new List());
        encodedSource.AddRange(encodedSymbol);
    }

    BitArray bits = new BitArray(encodedSource.ToArray());

    return bits;
}

Це повертає мені 0/1 двійкові біти, тепер у мене є цей код, щоб показати мені вихід:

foreach (bool bit in encoded)
{
    MessageBox.Show((bit ? 1 : 0) + "");
}

Тепер я просто показую MessageBox для кожного біта, але як я можу просто concat всі біти в один MessageBox, це може бути дурне питання, але я не можу обернути голову навколо нього.

0

11 Відповіді

var bitString = string.Concat(encoded.Select(bit => bit ? "1" : "0"))
5
додано
Спасибі вам це зробив трюк!
додано Автор user2022298, джерело
var bitString = string.Concat(encoded.Select(bit => bit ? "1" : "0"))
5
додано
Спасибі вам це зробив трюк!
додано Автор user2022298, джерело
var bitString = string.Concat(encoded.Select(bit => bit ? "1" : "0"))
5
додано
Спасибі вам це зробив трюк!
додано Автор user2022298, джерело

Нижче наведено метод розширення BitArray , який повинен виконати завдання:

public static class BitArrayExtensions
{
    public static string ToBitString(this BitArray encoded)
    {
        if (encoded == null)
        {
            return string.Empty;
        }

        var sb = new StringBuilder(encoded.Count);

        foreach (bool bit in encoded)
        {
            sb.Append(bit ? "1" : "0");
        }

        return sb.ToString();
    }
}

використовувати в коді як таке:

MessageBox.Show(encoded.ToBitString());
1
додано

використовуйте StringBuilder

StringBuilder tmp = new StringBuilder(encoded.Count)
foreach (bool bit in encoded)
{
    tmp.Append(bit ?"1": "0"));
}
MessageBox.Show(tmp.ToString());
1
додано
Перевірили це і також працює, спасибі за зусилля!
додано Автор user2022298, джерело
Ласкаво просимо)
додано Автор Guru Stron, джерело

Це візуалізує, що потрібно зробити:

Це в основному відбувається через всі записи і додавання або "1", або "0" до списку, залежно від запису.

    public static string ConcatList(List list)
    {
        StringBuilder builder = new StringBuilder();
        foreach (bool b in list)
        {
            builder.Append(b == true ? "1" : "0";
        }
        return builder.ToString();
    }
1
додано

Це візуалізує, що потрібно зробити:

Це в основному відбувається через всі записи і додавання або "1", або "0" до списку, залежно від запису.

    public static string ConcatList(List list)
    {
        StringBuilder builder = new StringBuilder();
        foreach (bool b in list)
        {
            builder.Append(b == true ? "1" : "0";
        }
        return builder.ToString();
    }
1
додано

Це візуалізує, що потрібно зробити:

Це в основному відбувається через всі записи і додавання або "1", або "0" до списку, залежно від запису.

    public static string ConcatList(List list)
    {
        StringBuilder builder = new StringBuilder();
        foreach (bool b in list)
        {
            builder.Append(b == true ? "1" : "0";
        }
        return builder.ToString();
    }
1
додано

Моя пропозиція:

string bitString = string.Empty;
foreach (bool bit in encodedSource)
{
  bitString = string.Concat(bitString, (bit ? "1" : "0"));
}
0
додано
Потенційна проблема продуктивності з усіма конкатами рядків. Інші відповіді з StringBuilder уникнуть цього.
додано Автор Jesse C. Slicer, джерело

Моя пропозиція:

string bitString = string.Empty;
foreach (bool bit in encodedSource)
{
  bitString = string.Concat(bitString, (bit ? "1" : "0"));
}
0
додано
Потенційна проблема продуктивності з усіма конкатами рядків. Інші відповіді з StringBuilder уникнуть цього.
додано Автор Jesse C. Slicer, джерело

Моя пропозиція:

string bitString = string.Empty;
foreach (bool bit in encodedSource)
{
  bitString = string.Concat(bitString, (bit ? "1" : "0"));
}
0
додано
Потенційна проблема продуктивності з усіма конкатами рядків. Інші відповіді з StringBuilder уникнуть цього.
додано Автор Jesse C. Slicer, джерело
var chat = new Chat();
var chat = new Chat();
642 учасників

Обсуждение вопросов по C# / .NET / .NET Core / .NET Standard / Azure Сообщества-организаторы: — @itkpi — @dncuug