March 25, 2018 converting a number into bit array | ||||
---|---|---|---|---|
| ||||
Given this, ´´´ import std.bitmanip; import core.stdc.limits; void main() { BitArray ba; ba.length = size_t.sizeof * CHAR_BIT; // enough length, known at compile time size_t arbitrary; // = random size_t, not known at compile time // ba ???assign??? arbitrary; assert(cast(size_t[])ba == [arbitrary]); } ´´´ how to convert a number to a BitArray as fast as possible, given that the BitArray is already allocated to the needed length? Is bit checking the way to go, or is there a way to cast one to the other somehow? |
March 25, 2018 Re: converting a number into bit array | ||||
---|---|---|---|---|
| ||||
Posted in reply to Alex | On Sunday, 25 March 2018 at 11:32:56 UTC, Alex wrote:
> how to convert a number to a BitArray as fast as possible, given that the BitArray is already allocated to the needed length?
> Is bit checking the way to go, or is there a way to cast one to the other somehow?
Via bit checking I would end with this:
´´´
void assign(BitArray ba, size_t val) //@nogc
{
import std.algorithm : each;
assert(ba.length == size_t.sizeof * CHAR_BIT);
val.bitsSet.each!(b => ba.flip(b));
}
´´´
|
Copyright © 1999-2021 by the D Language Foundation