除非性能在这里是关键任务,否则使用任何使您的代码最容易理解和维护的东西.
在开始编码任何事情之前,请确保您了解endianess,c ++类型大小以及它们可能有多奇怪.
的unsigned char是,大小是固定的(在机器的自然字节,通常为8位)的唯一类型.所以,如果你设计的便携性是一个安全的赌注.但是,使用unsigned int甚至是long long加速过程并使用size_of来查找每次读取中有多少位并不难,尽管代码变得更加复杂.
您应该知道,为了真正的可移植性,没有任何内部类型的c ++是固定的.unsigned char可能有9位,int可能小到0到65535范围内,如本和本答案中所述
正如user1200129所建议的,另一种替代方案是使用boost整数库来减少所有这些不确定性.如果您的平台上有可用的增强功能.虽然如果要使用外部库,可以选择许多序列化库.
但是,在开始优化之前,首先要做一些简单的工作.然后,当您开始遇到计时问题时,您可以开始分析.