View source code
Display the source code in std/bitmanip.d from which this page was generated on
github.
Improve this page
Quickly fork, edit online, and submit a pull request for this page.
Requires a signed-in GitHub account. This works well for small changes.
If you'd like to make larger changes you may want to consider using
local clone.
Page wiki
View or edit the community-maintained wiki page associated with this page.
Function std.bitmanip.write
Takes an integral value
, converts it to the given endianness, and writes it
to the given range
of ubyte
s as a sequence of T.sizeof
ubyte
s
starting at index
. hasSlicing!R
must be true
.
Prototypes
void write(T, std.system.Endian endianness, R)( R range, T value, size_t index ) if (canSwapEndianness!T && isForwardRange!R && hasSlicing!R && is(ElementType!R : ubyte)); void write(T, std.system.Endian endianness, R)( R range, T value, size_t* index ) if (canSwapEndianness!T && isForwardRange!R && hasSlicing!R && is(ElementType!R : ubyte));
Parameters
Name | Description |
---|---|
T | The integral type to convert the first T.sizeof bytes to. |
endianness | The endianness to write the bytes in. |
range | The range to write to. |
value | The value to write. |
index | The index to start writing to. If index is a pointer, then it
is updated to the index after the bytes read . |
Example
{ ubyte[] buffer = [0, 0, 0, 0, 0, 0, 0, 0]; buffer.write!uint(29110231u, 0); assert(buffer == [1, 188, 47, 215, 0, 0, 0, 0]); buffer.write!ushort(927, 0); assert(buffer == [3, 159, 47, 215, 0, 0, 0, 0]); buffer.write!ubyte(42, 0); assert(buffer == [42, 159, 47, 215, 0, 0, 0, 0]); } { ubyte[] buffer = [0, 0, 0, 0, 0, 0, 0, 0, 0]; buffer.write!uint(142700095u, 2); assert(buffer == [0, 0, 8, 129, 110, 63, 0, 0, 0]); buffer.write!ushort(19839, 2); assert(buffer == [0, 0, 77, 127, 110, 63, 0, 0, 0]); buffer.write!ubyte(132, 2); assert(buffer == [0, 0, 132, 127, 110, 63, 0, 0, 0]); } { ubyte[] buffer = [0, 0, 0, 0, 0, 0, 0, 0]; size_t index = 0; buffer.write!ushort(261, &index); assert(buffer == [1, 5, 0, 0, 0, 0, 0, 0]); assert(index == 2); buffer.write!uint(369700095u, &index); assert(buffer == [1, 5, 22, 9, 44, 255, 0, 0]); assert(index == 6); buffer.write!ubyte(8, &index); assert(buffer == [1, 5, 22, 9, 44, 255, 8, 0]); assert(index == 7); }
Authors
Walter Bright, Andrei Alexandrescu, Jonathan M Davis, Alex Rønne Petersen, Damian Ziemba Amaury SECHET