英語版
このページの英語版を見る
std.outbuffer
ubyte 配列にデータをシリアライズする。
License:
Authors:
ソース std/outbuffer.d
- class
OutBuffer
; - OutBufferは、生データからバイト配列を構築する方法を提供する。 を構築する方法を提供する。これは、ファイルに書き出すバイト配列を準備するときなどに便利である。 ファイルに書き出すためのバイト配列を準備するような場合に便利である。 OutBufferのバイト順序は、コンピュータのネイティブ・フォーマットである。 バイト順序(エンディアン)を制御するには、OutBufferから派生したクラスを使用する。 を使用する。 OutBufferの内部バッファはGCで割り当てられる。ポインター バッファに格納されたポインターはGCによってスキャンされるが、適切なアラインメントを確保しなければならない。 alignSize((void*).sizeof)を使うなどして、適切なアライメントを確保しなければならない。Examples:
import std.string : cmp; OutBuffer buf = new OutBuffer(); writeln(buf.offset); // 0 buf.write("hello"); buf.write(cast(byte) 0x20); buf.write("world"); buf.printf(" %d", 62665); writeln(cmp(buf.toString(), "hello world 62665")); // 0 buf.clear(); writeln(cmp(buf.toString(), "")); // 0 buf.write("New data"); writeln(cmp(buf.toString(), "New data")); // 0
- inout pure nothrow scope @safe inout(ubyte)[]
toBytes
(); - バイト配列に変換する。
- pure nothrow @trusted void
reserve
(size_tnbytes
); - 内部バッファのサイズよりnバイト多く事前確保する。これは これは速度の最適化である。 バッファの最大サイズを適切に推測することで、再割り当てやコピーを排除し、パフォーマンスを向上させる。
- alias
put
= write; - putは、OutBufferをOutputRangeとして使用できるようにする。
- pure nothrow @safe void
write
(scope const(ubyte)[]bytes
);
pure nothrow @safe voidwrite
(byteb
);
pure nothrow @safe voidwrite
(charc
);
pure nothrow @safe voidwrite
(dcharc
);
pure nothrow @safe voidwrite
(shorts
);
pure nothrow @safe voidwrite
(inti
);
pure nothrow @safe voidwrite
(longl
); - 内部バッファにデータを追加する。
- pure nothrow @safe void
fill
(size_tnbytes
, ubyteval
= 0); - nバイトのvalを内部バッファに追加する。Parameters:
size_t nbytes
埋めるバイト数。 ubyte val
デフォルトは0である。 - pure nothrow @safe void
fill0
(size_tnbytes
); - nバイトの0を内部バッファに追加する。
パラメータ nbytes - fillするバイト数。
- pure nothrow @safe void
alignSize
(size_talignsize
, ubyteval
= 0); - バッファが2のべき乗境界に整列するまでバイトを追加する。デフォルトでは0バイトで埋める。Parameters:
size_t alignsize
アライメント値。2のべき乗でなければならない。 ubyte val
デフォルトは0である。 Examples:OutBuffer buf = new OutBuffer(); buf.write(cast(ubyte) 1); buf.align2(); writeln(buf.toBytes()); // "\x01\x00" buf.write(cast(ubyte) 2); buf.align4(); writeln(buf.toBytes()); // "\x01\x00\x02\x00" buf.write(cast(ubyte) 3); buf.alignSize(8); writeln(buf.toBytes()); // "\x01\x00\x02\x00\x03\x00\x00\x00"
Examples:同上OutBuffer buf = new OutBuffer(); buf.write(cast(ubyte) 1); buf.align2(0x55); writeln(buf.toBytes()); // "\x01\x55" buf.write(cast(ubyte) 2); buf.align4(0x55); writeln(buf.toBytes()); // "\x01\x55\x02\x55" buf.write(cast(ubyte) 3); buf.alignSize(8, 0x55); writeln(buf.toBytes()); // "\x01\x55\x02\x55\x03\x55\x55\x55"
- pure nothrow @safe void
clear
(); - バッファ内のデータをクリアする
- pure nothrow @safe void
align2
(ubyteval
= 0); - 一般的な特殊ケースを最適化する alignSize(2)Parameters:
ubyte val
デフォルトは0である。 - pure nothrow @safe void
align4
(ubyteval
= 0); - 一般的な特殊ケースを最適化する alignSize(4)Parameters:
ubyte val
デフォルトは 0 である。 - const pure nothrow @safe string
toString
(); - 内部バッファを文字の配列に変換。
- nothrow @trusted void
vprintf
(scope stringformat
, va_listargs
); - C の vprintf() の出力を内部バッファに追加する。
- @trusted void
printf
(scope stringformat
, ...); - C の printf() の出力を内部バッファに追加する。
- void
writef
(Char, A...)(scope const(Char)[]fmt
, Aargs
);
voidwritef
(alias fmt, A...)(Aargs
)
if (isSomeString!(typeof(fmt))); - 引数をテキスト形式で整形し、OutBuffer に書き込む。Parameters:
const(Char)[] fmt
で説明されているように、文字列をフォーマットする。 std.format.formattedWrite A args
フォーマットされる引数 See Also:Examples:OutBuffer b = new OutBuffer(); b.writef("a%sb", 16); writeln(b.toString()); // "a16b"
Examples:OutBuffer b = new OutBuffer(); b.writef!"a%sb"(16); writeln(b.toString()); // "a16b"
- void
writefln
(Char, A...)(scope const(Char)[]fmt
, Aargs
);
voidwritefln
(alias fmt, A...)(Aargs
)
if (isSomeString!(typeof(fmt))); - 引数をテキスト形式で整形し、OutBufferに書き込む、 その後に改行が続く。Parameters:
const(Char)[] fmt
フォーマット文字列は std.format.formattedWrite A args
フォーマットされる引数 See Also:Examples:OutBuffer b = new OutBuffer(); b.writefln("a%sb", 16); writeln(b.toString()); // "a16b\n"
Examples:OutBuffer b = new OutBuffer(); b.writefln!"a%sb"(16); writeln(b.toString()); // "a16b\n"
- pure nothrow @safe void
spread
(size_tindex
, size_tnbytes
); - バッファのオフセット・インデックスで、nバイトのスペースを作成する。 すべてのデータをインデックスより上にシフトする。
Copyright © 1999-2024 by the D Language Foundation
DEEPL APIにより翻訳、ところどころ修正。
このページの最新版(英語)
このページの原文(英語)
翻訳時のdmdのバージョン: 2.108.0
ドキュメントのdmdのバージョン: 2.109.1
翻訳日付 :
HTML生成日時:
編集者: dokutoku