Oh, then it looks correct to write a function that reads 3 bytes int value
from pacp / wire and convert it to an int? This is what I have done: I read the
three bytes from the pcap in to an array of three bytes. And then I memcpy these
3 bytes from array to an int variable(which has been memset with 0's) And then I
do a ntohl on this int variable and return it as an int.
Thanks Guy Harris,
Regards,
Prashanth
On Fri, Mar 5, 2010 at 2:17 AM, Guy Harris
<guy@xxxxxxxxxxxx> wrote:
On Mar 4, 2010, at 12:42 PM, prashanth joshi wrote:
> thanks for the clarification.
> I was writing a function to read such 3 byte values and convert them to int. Unaware that uint24 field is supported in C (I have seen uint24 field only in wireshark).
> Now I am using the uint24 type.
Standard C doesn't have a uint24 data type (even C99 doesn't have uint24_t). I suppose if you're using C on the Datacraft/Harris machines (no relation):
http://bolt.beetlebolt.com/blog/?m=200706
you'd have a 24-bit data type, but most if not all machines capable of running Wireshark have 8-bit bytes and 32-bit or 64-bit registers.
Wireshark supports 24-bit integral-valued fields - but you put the values into 32-bit variables.