Brief answer:
ISo8583 is a protocol with flavors, each entity will implement it in their own way. While the common data will probably use the same fields (e.g.pan, track2, response code), proprietary data field will be added.
Plus packaging of each field will vary across entities (data may be transferred, as BCD,ASCII,HEX. Data may be fixed or variable length and have a length prepended to the actual data and that length itself can be packaged in numerous ways). So you have to go field by field from your spec and pick the correct packager for it.
If ISO8583 was really a standard, we would not have to write different packagers to pack/unpack the message, one packager would rule them all.
-chhil