Я бы посоветовал взглянуть на read
std.bitmanip, peek
, write
и append
. например
ubyte[] buffer = [1, 5, 22, 9, 44, 255, 8];
auto range = buffer; // if you don't want to mutate the original
assert(range.read!ushort() == 261);
assert(range == [22, 9, 44, 255, 8]);
assert(range.read!uint() == 369_700_095);
assert(range == [8]);
assert(range.read!ubyte() == 8);
assert(range.empty);
assert(buffer == [1, 5, 22, 9, 44, 255, 8]);
Типа буфера нет — это бесплатные функции, которые работают с диапазонами ubyte
(включая ubyte[]
) — поэтому они могут работать не совсем так, как вы ищете, но они предназначены для случая, когда вам нужно извлечь целочисленные значения из массива или какого-либо другого диапазона байтов. И если вам действительно нужен какой-то отдельный тип буфера, вы сможете довольно легко создать его, который использует их внутри.
person
Jonathan M Davis
schedule
09.03.2016