2016-07-16 11 views
-2

オフセットからバイトを抽出する方法オフセットの長さがのtvbのオフセット? tvbの種類は次のとおりです:uint8_t *バイトのオフセットxからNバイトをどのようにC言語で抽出するのですか?

uint8_t *tvb; 

uint8_t *extractBytes(uint8_t *tvb, guint8 offset, guint8 length) 
{ 
    // do ... 
    // extract bytes and return 
} 

どうすればいいですか?

ありがとうございます。

+1

私はコードを書いて言うでしょう。真剣に:これはコーディングサービスではありません。ループ、関数、変数、ポインタの使い方を示すCの本を入手してください。 'uint8_t *'はポインタであり、配列ではありません。ポインタをバイトに分割しますか? – Olaf

答えて

0

抽出されたバイトのメモリを割り当てる必要があります。そして、それは正しいバイトをコピーするだけの簡単な作業です:あなたはそれを使用して行われた後

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]); 
} 
関連する問題