I have u16 field in a code that assigned value like
0x1f does this means
0x1f00? can any one please tell me this. thanks. so 1f in upper half 8 bits of 16 bit field.
No, 0x1f is just another way of writing 31, so it does NOT mean 0x1f00, which is another way of writing 7936. (Tip: type "0x1f00 in decimal" into Google to verify this for yourself.)
It is correct to say that 0x1f is the same as 0x001f.
There is no standard data type named
u16, but I suppose you might be talking about
stdint.h. The C standard does not say exactly how a
uint16_t is encoded as bits on your target machine, but most computers use a convention called "little endian", which means the number will be stored as two bytes, and the least-significant byte is first. So a
uint16_t with a value of 0x1f (also known as 0x001f) would be encoded as two bytes, in this order: 0x1f 0x00.
You can experiment with this for yourself by making a struct with some
uint16_t members in them, setting them to different values, and then casting a pointer to that struct to type
uint8_t *. Then use the pointer to read the byte values at different locations in the struct, to see exactly how your struct is stored in memory.