¿Hay alguna manera de comprimir una gran cantidad de datos a un tamaño muy pequeño como en una bomba zip?

Si. Haga un archivo de 1 terabyte de todos los bytes cero y comprímalo. Casi cualquier compresor producirá un pequeño archivo. Los mejores compresores como RAR, 7ZIP o ZPAQ deberían producir archivos más pequeños que ZIP.

Si el compresor usa LZ77, codificará una cadena grande de n bytes idénticos como un solo byte literal seguido de un código de coincidencia con un desplazamiento de 1 y una longitud de n – 1. Dependiendo de los detalles del formato, puede haber un límite en la longitud máxima de coincidencia, por lo que pueden requerirse múltiples códigos de coincidencia que resulten en una peor compresión Para ZIP, el límite es de 32 KB y la relación de compresión es de aproximadamente 1000 a 1. Los otros compresores tienen límites mucho más altos y mejores relaciones.

Si comprende el formato comprimido, puede escribir códigos de coincidencia directamente en el archivo sin tener que crear un archivo de 1 TB para comenzar. O si tiene suficiente espacio en disco, puede crearlo con este programa g ++.

#include
int main () {
ARCHIVO * f = fopen (“archivo grande”, “wb”);
para (int i = 0; i <1000; ++ i) {
fseeko (f, 999999999, SEEK_CUR); // o _fseeki64 () en MSVC
putc (0, f);
}
}