抽出されたバイトのメモリを割り当てる必要があります。そして、それは正しいバイトをコピーするだけの簡単な作業です:あなたはそれを使用して行われた後
uint8_t *extractBytes(uint8_t *tvb, guint8 offset, guint8 length)
{
uint8_t *new = malloc (length);
if (new) {
mempcy (new, tvb+offset, length);
}
return new; /* Returns NULL on allocation failure */
}
が
free()
に割り当てられたメモリを忘れないでください。
上記のmalloc()
コールは、length
の番号をバイトに割り当てます。 uint8_t
より大きい要素にメモリを割り当てる場合は、その量に要素のサイズを掛けなければなりません。次のように安全のために、そして将来の変化を防ぐために、あなたはメモリを割り当てることができます。
new = malloc (length * sizeof *new);
さて、sizeof *new
は常に正しい要素のサイズになります。
:あなたはバイトを使用している間は変更されません抽出バイト、オリジナルのバッファ(
tvb
)を変更する必要がない場合
、あなたは直接のようなものを使用してそれらにアクセスすることができます
int i;
for (i = 0; i < length; i++) {
do_something (tvb[offset+i]);
}
私はコードを書いて言うでしょう。真剣に:これはコーディングサービスではありません。ループ、関数、変数、ポインタの使い方を示すCの本を入手してください。 'uint8_t *'はポインタであり、配列ではありません。ポインタをバイトに分割しますか? – Olaf