pack_bytes()

要素データを並べてバイト列を生成します。

uint8_t* pack_bytes(uint8_t* b, uint8_t* e, ...)

pack_bytesはコンテナクラスのbegin(),end()イテレータをパラメータとし、続くパラメータで指定されるデータをバイト列としてコンテナに書き込みます。

可変引数パラメータに与えるデータは以下に示すとおりです。

データ型

バイト数

解説

uint8_t

1

uint16_t

2

ビッグエンディアン並びで格納される

uint32_t

4

ビッグエンディアン並びで格納される

uint8_t[N]

N

uint8_t 型の固定長配列

std::pair<char*,N>

N

char*,uint8_t*型の配列と配列長のペア。make_pair()で生成できる。

smplbuf_u8& pack_bytes(smplbuf_u8& c, ...)

pack_bytesはコンテナオブジェクトをパラメータとし、続くパラメータで指定されるデータをバイト列としてコンテナに書き込みます。コンテナの.push_back()メソッドで末尾に追加します。

可変引数パラメータに与えるデータは以下に示すとおりです。

データ型

バイト数

解説

uint8_t

1

uint16_t

2

ビッグエンディアン並びで格納される

uint32_t

4

ビッグエンディアン並びで格納される

uint8_t[N]

N

uint8_t 型の固定長配列

std::pair<char*,N>

N

char*,uint8_t*型の配列と配列長のペア。make_pair()で生成できる。

smplbuf_u8?

.size()

uint8_t型のsmplbuf<>コンテナ。コンテナ長(.size())のデータを格納する。

この例では受信パケットの各属性やペイロードを別のバッファbufに再格納しています。

背景

無全パケットのデータペイロードの生成やデータの取り出しで用いられるuint8_t型のバイト配列の記述を簡素化するため。

上記はもっとも単純な記述だが、以下のようにByte array utilsを用いてバイト配列を生成できる。

最終更新