文件大小存储一个整数

File Size to store an integer

本文关键字:一个 整数 存储 文件大小      更新时间:2023-10-16

我想以一种减小文件大小的方式将一个整数(例如ex - 222222)写入文本文件。如果我以字符串的形式写整数,它需要6个字节,因为有6个字符。如果我以整数的形式存储这个整数,它还是需要6字节。为什么文件大小不等于4字节,因为int需要4字节?

#include <iostream>
#include<stdlib.h>
#include<stdio.h>
using namespace std;
int main()
{
    //char* x = "222222.2222";
    //double x = 222222.2222;
    int x = 222222;
    FILE *fp = fopen("now.txt","w");
    fprintf(fp,"%d",x);
    return 0;
}

下面是fprintf的定义:

writes the C string pointed by format to the stream. 

所以无论你传递给函数什么,它们都被视为string,这是包含222222存储的输出文件。

如果您想在文件中存储integer而不是string,您可以使用:fwrite

int x = 222222;
FILE *fp = fopen("now.txt","w");
fwrite(&x, sizeof(int), 1, fp);

如果您将编辑器更改为十六进制模式,则文件存储:0E 64 03 004字节。

这背后的原因很简单。

无论何时写入文件,它都以字符的形式存储。所以当你在文件中写入整数222222时它是一个字符一个字符地写入而不是一个整数

当您将integer写入integer时,该文件将转换为二进制文件。

当你写和读二进制文件时,需要注意填充、字节顺序等。另一种方式是纯文本,您将其作为字符串读取,并在库的帮助下将其转换为整数。

相关文章: