как преобразовать массив целых чисел (1 и 0) в их эквиваленты ASCII в C # - PullRequest
0 голосов
/ 20 февраля 2019

У меня есть массив целых 1 и 0 (возможно, нужно преобразовать в тип байта?).Я использовал онлайн ASCII для двоичного генератора , чтобы получить эквивалентный двоичный файл из этой последовательности из 6 цифр:

abcdef должен быть равен 011000010110001001100011011001000110010101100110 в двоичном виде.Итак, в c # мой массив [0,1,1,0,0,0,0...] построен следующим образом:

int[] innerArr = new int[48]; 
for (int i = 0; i < 48); i++) {
    int innerIsWhite = color.val[0] > 200 ? 0 : 1;
    innerArr[i] = innerIsWhite;
}

Я хочу взять этот массив и преобразовать его в abcdef (и смогу сделать наоборот).

Как мне это сделать?Есть ли лучший способ хранить эти нули.

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

Если ваш ввод является битовой строкой, то вы можете использовать метод, подобный приведенному ниже, чтобы преобразовать его в символьную строку

public static string GetStringFromAsciiBitString(string bitString) {
    var asciiiByteData = new byte[bitString.Length / 8];
    for (int i = 0, j = 0; i < asciiiByteData.Length; ++i, j+= 8)
        asciiiByteData[i] = Convert.ToByte(bitString.Substring(j, 8), 2);
    return Encoding.ASCII.GetString(asciiiByteData);
}

В приведенном выше коде просто используется метод Convert.ToByte, запрашивающий основание-2 строки в байтовое преобразование.Затем, используя Encoding.ASCII.GetString, вы получаете строковое представление из байтового массива

. В моем коде я предполагаю, что ваша битовая строка чистая (кратна 8 и содержит только 0 и 1), в коде производственного уровня вы будетедолжны очистить ваш вклад.

0 голосов
/ 20 февраля 2019

Попробуйте использовать Linq и Convert:

  source = "abcdef";

  // 011000010110001001100011011001000110010101100110 
  string encoded = string.Concat(source
    .Select(c => Convert.ToString(c, 2).PadLeft(8, '0')));

  // If we want an array
  byte[] encodedArray = encoded
    .Select(c => (byte) (c - '0'))
    .ToArray();

  // string from array
  string encodedFromArray = string.Concat(encodedArray);

  // abcdef
  string decoded = string.Concat(Enumerable
    .Range(0, encoded.Length / 8)
    .Select(i => (char) Convert.ToByte(encoded.Substring(i * 8, 8), 2)));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...