But I think that's how they're stored on the disk. I don't know how chunk data is being stored in memory, but storing IDs and metadata as fully fledged 32 bit integers would severly increase the size of savefiles.
I agree it's suboptimal though.
That is...very unlikely. Unless they use some very precise compression methods that, again, make massive use of bitwise operators, then ints are stored on disk exactly as they are in memory.
Arrays have definite use.
Admittedly, that comes from my C++ days, where the quote (I forget from whom) that stuck with me the most was: "If you have char* anywhere in your code, you have a bug. std::vector exists for a reason."
(For the those who do not know of the glory that is C++, char* is also known as a C-string. Due to how C/C++ works, pointers, any data type followed by an asterisk, can work and be addressed exactly like arrays. However, due to the potential for mismanagement, the fact that C/C++ requires that you manage your own memory, and the fact that pointers are allocated on the heap instead of on the stack and thus must be deleted manually in code, pointers can lead to many, many problems such as memory leaks, which can also be potential security risks.)