Перевод bool[64] в ulong
У меня есть bool[64] массив, который нужно первевести в ulong. Я пол дня пытался, но у меня ничего не получилось. И пожалуйста напишите объяснение
Ответы (1 шт):
Автор решения: aepot
→ Ссылка
Не факт, что идеальное решение, но рабочее.
private ulong ArrayToUInt64(bool[] arr)
{
if (arr.Length < 64)
throw new ArgumentException("Wrong array length", nameof(arr));
ulong result = 0;
ulong j = 1;
for (int i = 0; i < 64; i++)
{
if (arr[i])
result |= j;
j *= 2;
}
return result;
}
Точно надо объяснять? Простая двоичная арифметика. 1 - первый бит, 2 - второй, 4 - третий, 8 - четвертый, и так далее 63 раза умножить на два. Оператор | - двоичное сложение "или", включает бит.