Парсер не так уж сложен ...
Я посмотрел код Packet.Net (который является синтаксическим анализом для SharpPcap), и все поля хранятся в широко используемых форматах.
IP-адреса хранятся в формате System.Net.IPAddress, так что вы можете просто вызвать .ToString для них, чтобы получить текстовую строку, которая правильно включает в себя точки.
Номера портов хранятся в формате ushort, которые могут быть напечатаны так же, как и любое другое целое число.
Единственная часть, которую необходимо интерпретировать в двоичной форме, - это поле данных, поскольку оно изменяется в зависимости от того, какой протокол используется на следующем уровне. SharpPcap / Packet.Net уже выполняет большую часть работы за вас, и поля хранятся в наиболее удобных или идентичных формах, которые указаны в спецификации протокола. Просто используйте intellisense, чтобы проверить тип поля, и если он не знаком с вами (например, System.Net.IPAddress или System.NetworkInformation.PhysicalAddress (для MAC-адресов)), просто введите его в Google.