& là Bitwise và nhà điều hành, trong trường hợp này bạn anding ver_ihl với 0xF mà có tác dụng làm sạch tất cả các bit khác với ít nhất signifcant 4
0xff & 0x0f = 0x0f
ver_ihl được định nghĩa là 4 bit đầu tiên = phiên bản + thứ hai 4 = Độ dài tiêu đề Internet. Các hoạt động và loại bỏ các dữ liệu phiên bản để lại dữ liệu độ dài của chính nó. Chiều dài được ghi nhận là số lượng các từ 32 bit nên * 4 biến ip_len vào đếm byte trong tiêu đề
Đáp lại bình luận của bạn:
Bitwise và ands các bit tương ứng trong toán hạng. Khi bạn và bất cứ điều gì với 0 nó trở thành 0 và bất cứ điều gì với 1 vẫn như cũ.
0xF = 0x0F = nhị phân 0000 1111
Vì vậy, khi bạn và 0x0F với bất cứ điều gì trong 4 bit đầu tiên được thiết lập để 0 (như bạn đang anding chúng chống lại 0) và 4 bit cuối cùng vẫn như trong toán hạng khác (như bạn đang và chống lại chúng 1). Đây là một kỹ thuật phổ biến được gọi là bit masking.
http://en.wikipedia.org/wiki/Bitwise_operation#AND
+1 để trung thực và triệt để :) –