expand-bytes()
“バイト列を分解し変数に格納”
バイト列を分解し変数に格納します。
expand_bytes()
は、パラメータにuint8_t*
型のイテレータの組み合わせを指定します。これは解析対象の先頭と末尾の次のイテレータの指定となります。e
の位置まで解析が進んだ場合はエラーとなりnullptr
を返します。
展開にエラーがない場合は、次の読み出しを行うイテレータを戻します。
可変数パラメータには以下を指定します。
バイト数 | データ長 | 解説 |
---|---|---|
uint8_t | 1 | |
uint16_t | 2 | ビッグエンディアン並びとして展開する |
uint32_t | 4 | ビッグエンディアン並びとして展開する |
uint8_t[N] | N | uint8_t 型の固定長配列 |
std::pair<char*,N> | N | char* ,uint8_t* 型の配列と配列長Nのペアmake_pair() で生成できる |
例
この例では、まず4バイトの文字列を読み出しています。ここではmake_pair()
を用いて明示的に4バイト分のデータを読み出します。
戻されたイテレータnp
をもとに、次のデータを読み出します。次のデータはuint8_t
型、あとはuint16_t
型が5つ続いています。
背景
無全パケットのデータペイロードの生成やデータの取り出しで用いられるuint8_t
型のバイト配列の記述を簡素化するため。
上記はもっとも単純な記述だが、以下のようにByte array utilsを用いてバイト配列から読み出せる。