What is best depends on what you want to achieve.
Do you want the most compact encoding? Or the fastest encoding?
Or the encoding which is easiest to debug? Or the simplest encoding?
Or an encoding which allows you to gracefully add fields to the type as your program evolves without invalidating persisted data?
You state that your type is easily represented as a sequence of ints. But I would ask whether converting to ints is an unnecessary
step which will lead to less clear code?
Hope this helps....