www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - converting a number into bit array

reply Alex <sascha.orlov gmail.com> writes:
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?
Mar 25 2018
parent Alex <sascha.orlov gmail.com> writes:
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)); } ´´´
Mar 25 2018