|
|
1
3
基本上你的格式
但您只能以这种格式存储最多999个数字,即使这样,超过99个数字也会混合在一起。
直接访问存储了整数的二进制表示,因此每个数32位或4字节。总共36字节。这超过了格式化版本的28个,但是它可以处理所有整数,最大2147483647,最小2147483648,同时仍然保持相同的大小。(如果您希望格式化版本具有相同的灵活性,则需要格式化
未格式化的版本有点居中,它仍然存储一些元数据,这就是为什么它比直接访问大一点,但是像直接访问一样,您可以以这种方式存储所有整数,同时占用相同的空间量。 至于第二个问题,你应该使用什么取决于很多事情。正如您注意到的,如果整数总是在0到99之间,那么它们的字符串表示形式比它们的二进制表示形式小。但是,一旦需要4位数字(包括符号),二进制表示就会变小。我可能还会指出,如果您的数字很小,那么您也可以将它们声明为8位或16位整数,这意味着它们分别只占用一个或两个字节。 二进制表示也更快,因为数字不需要在二进制和字符串之间转换。 但是对于您所谈论的大小,研究其他文件格式可能很有价值,比如 NetCDF 它有一些压缩数据的方法。 |
|
|
2
3
虽然不是直接解决您的问题,但我想注意,如果您使用二进制数据,文件大小有一个下限。即使使用了最密集的存储表示,但没有任何校验和或有关记录长度的元信息,也必须存储sizeof(datatype)*num_entries字节。
你可以使用像
blosc
甚至可以超越C的RAM到RAM
100GB可能是许多适合您机器RAM的数据。可以手动将文件分块,也可以使用类似的库 HDF5 . HDF5为基本上任意数量的高性能数据提供压缩块存储。然而,合并一个大型图书馆可能是一些工作,即使有一个 HDF5 Fortran API . |
|
|
D W · Python-将浮点数从2转换为10到100位小数 1 年前 |
|
|
NScara · 从Python中的二进制值解压缩文件[关闭] 2 年前 |
|
|
cake2244 · R中的应急表[副本] 2 年前 |
|
|
Linh Chi · 如何调试用于二进制搜索的Javascript代码 3 年前 |
|
|
GoodCat · 如何将这64行缩短4个字符? 3 年前 |