Когда я просто разархивировал Gradle в папку, установил GRADLE_HOME и добавил его в свой путь, у меня были всевозможные проблемы с IntelliJ, не зная, что нужно восстановить. Некоторым помогло удаление выходного каталога IntelliJ .
Затем, однажды, обновили IDEA до:
IntelliJ IDEA 2019.1 (Ultimate Edition)
Build #IU-191.6183.87, built on March 27, 2019
JRE: 1.8.0_202-release-1483-b39 amd64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Linux 4.15.0-47-generic
Затем я установил Gradle, используя SDKMAN! в соответствии с инструкциями Gradle , и повторно импортировал проект в ИДЕЮ. Эта проблема и все другие мои проблемы со сборкой исчезли. Что из этого действительно решило мою проблему? Я не знаю.
Вот два подхода, в зависимости от того, хотите ли Вы упаковать биты в байты или иметь столько же байтов сколько исходные биты:
bool[] bools = { true, false, true, false, false, true, false, true,
true };
// basic - same count
byte[] arr1 = Array.ConvertAll(bools, b => b ? (byte)1 : (byte)0);
// pack (in this case, using the first bool as the lsb - if you want
// the first bool as the msb, reverse things ;-p)
int bytes = bools.Length / 8;
if ((bools.Length % 8) != 0) bytes++;
byte[] arr2 = new byte[bytes];
int bitIndex = 0, byteIndex = 0;
for (int i = 0; i < bools.Length; i++)
{
if (bools[i])
{
arr2[byteIndex] |= (byte)(((byte)1) << bitIndex);
}
bitIndex++;
if (bitIndex == 8)
{
bitIndex = 0;
byteIndex++;
}
}
Можно использовать LINQ. Это не будет эффективно, но будет просто. Я предполагаю, что Вы хотите один байт на bool.
bool[] a = new bool[] { true, false, true, true, false, true };
byte[] b = (from x in a select x ? (byte)0x1 : (byte)0x0).ToArray();
Если Вы имеете какой-либо контроль над типом списка, попытайтесь сделать его Списком, который затем произведет байт [] на ToArray (). Если у Вас есть ArrayList, можно использовать:
(byte[])list.ToArray(typeof(byte));
Для получения Списка Вы могли создать один с Вашим неуказанным итератором списка как вход конструктору и затем произвести ToArray ()? Или скопируйте каждый объект, бросив к новому байту от bool?
Некоторая информация о том, какой список это, могла бы помочь.
Взгляните на класс BitConverter. В зависимости от точного характера Вашего требования это может решить Вашу проблему вполне аккуратно.