how to check a bit is enabled or not in array of hexadecimal digit
<pre><code>#include&lt;iostream&gt;
#define check_bit(var,pos) {return (var &amp; (1 &lt;&lt; pos))!=0;}

using namespace std;

int main()
{
uint8_t temp[150]={0x00,0x02,0x17,0xe2,0x1c,0xa8,0x00,0x30,0x96,0xe1,0x8c, 0x38,
 0x88, 0x47, 0x00 ,0x01 ,
0x30, 0xfe, 0x00, 0x01 ,0x31, 0xfe, 0x45, 0x00,  0x00 ,0x64, 0x3b, 0x89 ,0x00, 0
x00 ,0xfe, 0x01 ,
0x33, 0x5a, 0xc0 ,0xa8 ,0x79 ,0x02 ,0x0a, 0x0a,  0x0a, 0x01, 0x08, 0x00, 0xe3, 0
x86, 0x00, 0xea,
0x01, 0xd2, 0x00, 0x00, 0x00, 0x05, 0x02, 0x6a, 0x95 ,0x98, 0xab ,0xcd ,0xab, 0x
cd ,0xab, 0xcd,
0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,  0xab, 0xcd ,0xab, 0xcd ,0xab ,0
xcd ,0xab, 0xcd,
0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd,  0xab, 0xcd ,0xab ,0xcd ,0xab ,0
xcd, 0xab ,0xcd,
0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd , 0xab, 0xcd ,0xab, 0xcd, 0xab, 0
xcd, 0xab ,0xcd,
0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd , 0xab, 0xcd
};

uint16_t *ptr1=(uint16_t*)&amp;temp[0];

while(!(*(ptr1+0)==0x88 &amp;&amp; *(ptr1+1)==0x47))
{
ptr1++;
}

cout&lt;&lt;"MPLS packet";

uint32_t *ptr2=(uint32_t*)&amp;temp[0];

cout&lt;&lt;"4 bytes accessed at a time";

ptr2++;

while(check_bit(*(ptr+3),7)!=1)
{
cout&lt;&lt;"bottom of the stack:label 0";
ptr2++;
}
cout&lt;&lt;"mpls label:1";
return 0;
}
</code></pre>

<p>The program is intended to identify packet is MPLS or not by accessing two bytes at a time and checking presence of 88 and 47 packets and if MPLS packet then it should access four packets at a time and check 3rd byte(30 in this case) is enabled or not.If not enabled then access next four bytes and check byte is enabled or not.I have written program but it is not working.Please someone help me.I am not able to access individual element of array.if i give <code>cout&lt;&lt;temp[0]</code> it gives garbage value</p>

<p>Please help </p>
