Представление списка/массива целых чисел в 64 - битном массиве
У меня есть список/массив с некоторыми целыми числами.
массив = {1,2,3,4,5,7,11,14,15...}
для каждого целого числа, существующего в массиве/списке от 1 до 8, я добавляю бит до 1 байта, а затем преобразую двоичный код в десятичный. В этом случае 11111010(6 и 8 не существует) = 250. Аналогично следующая итерация.
Что я уже пробовал:
Я попробовал это сделать, добавив каждый бит к строке, когда число встречается, а затем преобразовав его в десятичное число. Как только все 8 итераций будут выполнены, преобразуйте их в 8-байтовый массив.
Есть ли лучший способ сделать это? возможно, с помощью побитовых операторов?
private byte[] GetBitMapFromFields(List<int> fieldNo) { byte[] bytes = new byte[8]; List<int> tempList = new List<int>(); string binaryfield = string.Empty; var count = 1; for (var i = 0; i < fieldNo.Count; i++) { var k = 0; for(var j =1; j<=8;j++) { if (count == fieldNo[i]) { binaryfield = binaryfield + 1; i++; k++; count++; } else { binaryfield = binaryfield + 0; k++; count++; } if(k==8) { i--; break; } } int output = Convert.ToInt32(binaryfield, 2); binaryfield = string.Empty; tempList.Add(output); } bytes = ConvertListToByte(tempList); //Converts the list to byte array of length 8 return bytes; }