Like George, I have not had to use one and cannot recommend one random google result over another. Its always tough when you have a lot of choices -- I even found a TOP 20 page so you certainly have your work cut out deciding which one to use. Be aware that the type codes and exact details (endian, etc) may vary across implementations so if you need to talk to another program that uses it, you need to use the same library or the same encoding at least. If you get to decide both ends, its a lot easier, you don't even need a library, just make up your type code table & 3 or 4 lines would be done with it. Given the simplicity, I would probably do that to avoid a dependency you don't need.