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を用いてバイト配列から読み出せる。
最終更新